有序集合list和tuple

1、可变的有序集合list

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']

变量classmates就是一个list

用len()函数可以获得list元素个数:

>>> len(classmates)
3

使用索引访问list中每个位置的元素,从0开始:

>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
>>> classmates[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

当索引超出了范围时,会报一个IndexError错误,要确保索引不越界,最后一个元素的索引是len(classmates)-1

若要取最后一个元素,除了计算索引位置,还可以用-1做索引:

>>> classmates[-1]
'Tracy'

以此类推,可以获取倒数第2个,倒数第三个:

>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'
>>> classmates[-4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

倒数第4个越界了,所以报错

追加元素到末尾:

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']

将元素插入到索引号为1的位置:

>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

删除末尾的元素:

>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']

删除索引为1的元素:

>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']

替换元素,直接赋值给对应的索引位置:

>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']

list里面元素的数据类型可以不同:

>>> L = ['Apple', 123, True]
>>> L
['Apple', 123, True]

list可以作为元素属于另一个list:

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4

s[2]也是一个list:

>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']
>>> s
['python', 'java', ['asp', 'php'], 'scheme']

要拿到'php',可以写成p[1]或者s[2][2],可以将s看成一个二维数组

空的list,长度为0:

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

2、不可变的有序集合tuple

tuple叫做元组,一旦初始化就不能修改:

>>> classmates = ('Michael', 'Bob', 'Tracy')

无法更改其中的元素,可以正常使用classmates[0],classmates[-1]进行获取元素

因为tuple不可变,所以代码更安全,能用tuple代替list就尽量用tuple

如果定义一个tuple,在定义的时候,tuple的元素必须被确定下来:

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

定义空的tuple:

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

定义只有一个元素的tuple:

不能这样定义:

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

这样的话,括号表示的是数学运算当中的括号,自然结果就等于1

以下定义是正确的:

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

在显示tuple的值时,也会加一个逗号,以免你误解成数学计算意义上的括号

注:记得在元素后面加逗号

“可变”的tuple:

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

表面上看tuple的元素变了,其实变的不是tuple的元素,而是list的元素,因为tuple指向的list没有改变,所以,tuple所谓的”不变“是说,tuple的每个元素,指向永远不变,即指向一个list,就不能改成指向其他对象,但是指向的这个list本身是可变的

要保证创建的tuple内容也不变,那就必须保证tuple的每个元素本身也不能变

3、练习:

# -*- coding: utf-8 -*-
L = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Lisa']
]
# 打印Aplle:
print(L[0][0])
# 打印Python:
print(L[1][1])
# 打印Lisa:
print(L[2][2])

D:\Pythoncode>python 1.py
Apple
Python
Lisa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小将有大招

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值