使用list和tuple

list
列表(list)是python内置的一种数据结构,是一种有序的集合,可以随时添加和删除其中的元素。
例如

>>> names=['zhangsan','lisi','wangwu']
>>> names
['zhangsan', 'lisi', 'wangwu']

变量names就是一个list.用len()函数就可以得到list元素的个数:

>>> len(names)
3

用索引来访问list中每一位置的元素,从0开始;

>>> names[0]
'zhangsan'
>>> name[1]
'lisi'
>>> names[2]
'wangwu'
>>> names[3]
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    names[3]
IndexError: list index out of range

因list中只有names[0],names[1],names[2]三个元素,names[3]超出范围,提出错误。

如果要获取最后一个元素,除了计算索引外,还可以用-1作索引,直接获取最后一个元素:

>>> names[-1]
'wangwu'

同样地得到倒数第2个,倒数第3个:

>>> names[-2]
'lisi'
>>> names[-3]
'zhangsan'

list是可变的有序表,可以追加元素到list末尾:

>>> names.append('zhaoliu')
>>> names
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']

也可以把元素追加到指定的位置,比如2:

>>> names.insert(2,'Mike')
>>> names
['zhangsan', 'lisi', 'Mike', 'wangwu', 'zhaoliu']

要删除list末尾的元素用pop():

>>> names.pop()
'zhaoliu'

要删除list指定位置,用pop(i),i表示索引位置;
比如删除names[2]:

>>> names.pop(2)
'Mike'
>>> names
['zhangsan', 'lisi', 'wangwu']

要把某个元素替换成别的元素,直接赋值给对应的索引位置:

>>> names[1]='Jack'
>>> names
['zhangsan', 'Jack', 'wangwu']

list里面的数据类型也可以不同,比如:

>>> L=['sdjkd',1234,True]
>>> L
['sdjkd', 1234, True]

list元素也可以是另一个list:

>>> S=['dgial','diuh',['sf','sfsfgs'],123]
>>> len(S)
4
>>> S
['dgial', 'diuh', ['sf', 'sfsfgs'], 123]

也可以拆开写:

>>> P=['sf','sfsfgs']
>>> S=['dgial','diuh',P,123]
>>> S
['dgial', 'diuh', ['sf', 'sfsfgs'], 123]

要得到‘’sf‘’,可以写P[0],或S[2][0],S可以看成是一个二维数组:

>>> P[0]
'sf'
>>> S[2][0]
'sf'

如果list里面一个元素也没有,就是一个空的list,长度为0:


>>> L=[]
>>> len(L)
0

tuple
另一种有序列表叫元组:tuple,tuple和list非常类似,但是一旦初始化就不能修改:

>>> names=('ads','gbee','wr')
>>> names[0]
'ads'

现在names这个tuple不能变了,它也没有append(),insert()这样的方法,也不可赋值成另外的元素。其他获取元素的方法和list是一样的。

注意:当你定义一个tuple时,在定义的时候tuple元素就必须要确定下来:

>>> t=(1,2,3)
>>> t
(1, 2, 3)

如果要定义一个空的tuple,可以写成:

>>> t=()
>>> t
()

但是要定义只有一个元素的tuple,如果这么写:

>>> t=(1)
>>> t
1

那么定义的就不是tuple,而是1这个数,因为括号既可以表示tuple,也可以表示数学公式的小括号,产生歧义。因此python规定,在这种情况下,按小括号计算。
所以,定义只有一个元素的tuple时,必须加‘,’来消除歧义:

>>> t=(1,)
>>> t
(1,)

“可变”tuple:

>>> t=('a','b',['A','B'])
>>> t[2][0]='x'
>>> t[2][1]='y'
>>> t
('a', 'b', ['x', 'y'])

这时候有3个元素,分别是’a’,'b’和一个list,不是说tuple一旦定义,就不能更改吗,那这是为什么呢

表面上看,tuple中的元素确实改变了,但其实改变的不是tuple中的元素,而是list中的元素,tuple一开始指向的list并没有改成别的list。所以tuple所谓的‘不变’是表示tuple的每一个元素指向不变,即指向‘a’,就不能改变成指向‘b’,指向list,就不能指向另外的list,但是可以改变list本身中的元素。

list和tuple是python内置的有序集合,一个可变,一个不可变,根据需要选择。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值