Python 基础——tuple与list、append与extend

tuple可读不可写,tuple的元素不可作左值,list反之

>>>t = (1, 2, 3)
>>>t[:]
(1, 2, 3)

>>>t[0] = 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>>l = [1, 2, 3]
>>>l[:]
[1, 2, 3]
>>>l[0] = 4

两者的成员函数:tuple几乎没什么成员函数,list却有着丰富的成员函数:

>>>t = (1, 2, 3, 3, 4)
>>>dir(t)
# 有意义的成员函数只有`count`、`index`
# count,记录元组中某一元素出现的次数,index返回值所在的下标
>>>t.count(3)
2
>>>t.count(2)
1
>>>t.index(4)
4

>>>l=[1, 2, 3, 4]
dir(l)


Python 基础——tuple与list、append与extend_第1张图片



# extend见名知意,扩展,既然存在我们广泛使用`[].append(*)`函数,`extend`
# 从这也意义上说,`tuple`更像是`C`语言中的一维数组,长度在初始化时即已确定,
# 而`vector`(以`C++STL`)为例,也存在着`push_back()`之类的函数,可动态扩从其大小

>>>l = [1, 2, 3]
>>>l.extend(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

# 这点可见extend与append函数的区别

>>>l.extend([4, 5])
>>>l
[1, 2, 3, 4, 5]

>>>l.append([6, 7])
>>>l
[1, 2, 3, 4, 5, [6, 7]]

# 也即每次append添加的是一个元素(作为一个整体添加进去),
# 而这个元素的类型不定,可以是整型,也可以是字符串类型,
# 而extend的参数必须是可迭代的类型,这样添加的是其中的每一个元素,
# 而不是作为整体进行添加

彼此间类型转换

>>>l = [1, 2, 3, 3, 4]
>>>tuple(l)
(1, 2, 3, 3, 4)
>>>t = (1, 2, 3, 3, 4)
>>>list(t)
[1, 2, 3, 3, 4]

>>>(l)
[1, 2, 3, 3, 4]
>>>[t]                 # 由元组组成的list
[(1, 2, 3, 3, 4)]

tuple的切片还是tuplelist的切片还是list(这可能是一句废话)

>>>type(t[0:2])
<class 'tuple'>
>>>type(l[0:3])
<class 'list'>

你可能感兴趣的:(Python 基础——tuple与list、append与extend)