列表和元组区别
元组和列表最大的区别就是,可以任意修改列表中的元素,可以任意插入或者删除一个元素,但对于元组是不行的。
另外一个明显区别是,创建列表时用的是中括号,创建元组大部分时候用的小括号。如果是:
>>>temp = (1)
>>>type(temp)
<class 'int'>
发现temp还是int类型,改为:
>>>temp = 1, 2, 3
>>>type(temp)
<class 'tuple'>
没有小括号,temp还是元组,所以逗号才是关键,想要建立一个只有一个元素的元组,必须加上逗号:
>>>temp = (1,)
>>>type(temp)
<class 'tuple'>
再举个例子:
>>>8 * (8)
64
>>>8 * (8,)
(8, 8, 8, 8, 8, 8, 8, 8)
关于列表分片“拷贝”概念
利用分片创建列表的拷贝与利用“赋值”创建新列表:
>>>list1 = [1, 2, 3, 4, 5]
>>>list2 = list1[:]
>>>list2
[1, 2, 3, 4, 5]
>>>list3 = list1
>>>list3
[1, 2, 3, 4, 5]
看似list2和list3没有区别,用一下翻转排序:
>>>list1.reverse()
>>>list1
[5, 4, 3, 2, 1]
>>>list2
[1, 2, 3, 4, 5]
>>>list3
[5, 4, 3, 2, 1]
可以看到,使用分片方式得到的拷贝list2是真正的拷贝一个新列表,list3的方式只是为一个列表指定另一个名字的做法,向同一个列表增加了一个新标签而已。
更新和删除元组
元组不能直接修改其中的元素,但是可以通过间接的方法,分片拷贝至新元组,然后拼接,例如:
>>>fruit = ('apple', 'banana', 'orange', 'lemon')
>>>fruit = fruit[:2] + ('peach',) + fruit[2:]
>>>fruit
('apple', 'banana', 'peach', 'orange', 'lemon')
注意中间插入的也是元组('peach',),如果单单是一个字符串'peach'是不行的。同理,删除一个元素可以用:
>>>fruit = fruit[:2] + fruit[3:]
>>>fruit
('apple', 'banana', 'orange', 'lemon')
可以用del语句删除整个元组