1. 列表(list)
创建列表时,将元素放在一个 [ ] 中,元素之间用逗号隔开,表中元素类型可以不同。
lis1 = []
lis2 = [1, 2, 3, 4, 5]
lis3 = [1, 'a', [1, 2, 3], {'a': 12}]
1.1 list()
list ([interabel]) 列表构建器
# 将元祖转换为列表
(1, 2, 3, 4, 5)
list((1, 2, 3, 4, 5))
# 将range类型转换为列表
range(10)
list(range(10))
# 将map对象转换为列表
map(str, range(10))
list(map(str, range(10)))
# 将zip对象转换为列表
zip('abc', [1, 2, 3])
list(zip('abc', [1, 2, 3]))
# 将enumerate对象转换为列表
enumerate('Python')
list(enumerate('Python'))
# 将字典转换完成列表时,只有键会放进列表
list(dict(name='jiang', age=14))
# 将字符串中每一个字符都放进列表
list('Python')
# 删除列表
t = list({1, 2, 3, 4})
print(t)
del t
# print(t) # 报错NameError
1.2 列表解析式
构建一个列表,其元素有一个可迭代对象进行某类操作而产生。
# 将 0~9 中能整除三的元素平方
[i**2 for i in range(9) if i % 3 == 0]
( 有疑惑可参考 三元表达式-进阶语法-优快云Python入门技能树)
1.3 列表切片
切片(Slicings)是获取有序序列中部分元素的方法。
[ start : end : step ]
切片会产生一个新列表。
lis = [i * 2 for i in range(0, 31, 3)]
print(lis[:]) # 取t中所有元素
print(lis[::3]) # 每三个元素中取一个元素
print(lis[-1:]) # 取最后一个元素
print(lis[:-1]) # 除最后一个元素之外的全部元素
例 :将列表中元素循环移动三位
# + 在数学运算为加,在列表之间为连接
print(lis[3:]+lis[:3]) # 左移
print(lis[-3:]+lis[:-3]) # 右移
1.4 常见序列运算
len() 序列长度 max() 序列最大值 min() 序列最小值
lis.index(x) lis 中第一次出现的 x 元素的下标
lis = [0, 1]*8
print(lis)
print(lis.index(1))
lis.count(x) lis 中 x 出现的次数
lis = [0, 1]*8
print(lis)
print(lis.count(1))
1.5 常见序列操作
del s[i:j:k] 将 lis[i:j:k] 从 s 中删除
s.append(x) 将 x 元素添加到 s 末尾
s.insert(i,x) 在位置 i 上插入 x
s.pop([i]) 删除 s 位置 i 的元素
s.remove(x) 删除 s 中第一个 x
s.reverse() 逆序 s 所有元素,使原序列翻转,无返回值
1.6 列表常用方法
1.6.1 1.5的所有操作
lis.extend([ i , j ]) lis 末尾 添加 i 和 j
1.6.2 sorted() sort()
sorted(iterable, cmp=None, key=None, reverse=False)
sort(*, key = None,reverse=False) 按元素大小排序,无返回值。
lis = list(range(10))
lis.reverse()
print(sorted(lis))
print(lis)
lis.sort(key=lambda x: x % 3)
print(lis)
1.7 s.copy()
浅复制,复制后,操作复制列表不改变被复制列表
lis1 = list(range(10))
lis2 = lis1
lis3 = lis1.copy()
lis2[3] = 300
lis3[6] = 600
print(lis1)
2. 元组(tuple)
元组,与列表类似,但其创建后元组内元素不可变。
eg:元组 [ 3 ] = 元素 将会报错 TypeError
创建列表时,将元素放在一个 [ ] 中,元素之间用逗号隔开,表中元素类型可以不同。
创建元组时,将元素放在一个 ( ) 中,元素之间用逗号隔开,表中元素类型可以不同。
t1 = ()
t2 = (1, 2, 3, 4, 5)
t3 = (1, 'a', [1, 2, 3], {'a': 12})
t4 = tuplr([1, 2, 3])
tuple() 创建与可迭代元素相同的元组
元组是不可变的,不能直接修改元祖的值,不能增添删除元素。元组访问速度比列表快,开销小,当只是进行遍历等操作时,可将列表转换为元组,需要修改时,再转换为列表。
元组可作为字典的键,也可作为集合的元素,但列表不可以,包括列表的元组也不可以。
2.1 生成器表达式(generate expression)
与 列表解释式 创造方式相似
# 将 0~9 中能整除三的元素平方
(i**2 for i in range(9) if i % 3 == 0)
注意事项:
1. 它返回值并不是元组,而是一个迭代器。
2. 生成器中,只有元素被读到内存中才被创建,因此不能求长度,不能索引和切片。
3. 生成器常用于 for 循环,遍历结束 for 循环能够自动处理Stoplteratio异常,生成器对象 的next 方法或使用 next() 必须捕捉异常。