Python基础-列表

2019-06-05  本文已影响0人  月沉眠love

Python基础-列表

1.定义列表

a = [11,22,33,44,"hello","世界",1212]  #定义一个列表 索引从0 开始计数
a[4] = "HELLO"  # 修改列表中元素
print(a)  # [11,22,33,44,"HELLO","世界",1212]

2.列表的切片

a = [11,22,33,44,"hello","世界"]
print(a[2:4])   # [33,44,"hello"]取列表2-4的值

3.列表修改元素

#添加
a.append("zhangshan")  # 在列表最后添加了一个元素
#删除
a.remove("hello")
del a[5]
a.pop(5) 
#插入
a.insert(3,666) #  在3的位置插入666

4.列表长度

len(a)

不可变对象

字符串str是不变对象,而list是可变对象。

对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如:

>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']

而对于不可变对象,比如str,对str进行操作呢:

>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'

虽然字符串有个replace()方法,也确实变出了'Abc',但变量a最后仍是'abc',应该怎么理解呢?

我们先把代码改成下面这样:

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'

要始终牢记的是,a是变量,而'abc'才是字符串对象!有些时候,我们经常说,对象a的内容是'abc',但其实是指,a本身是一个变量,它指向的对象的内容才是'abc':

┌───┐ ┌───────┐
│ a │─────────────────>│ 'abc' │
└───┘ └───────┘
当我们调用a.replace('a', 'A')时,实际上调用方法replace是作用在字符串对象'abc'上的,而这个方法虽然名字叫replace,但却没有改变字符串'abc'的内容。相反,replace方法创建了一个新字符串'Abc'并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串'abc',但变量b却指向新字符串'Abc'了:

┌───┐ ┌───────┐
│ a │─────────────────>│ 'abc' │
└───┘ └───────┘
┌───┐ ┌───────┐
│ b │─────────────────>│ 'Abc' │
└───┘ └───────┘
所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

上一篇 下一篇

猜你喜欢

热点阅读