本文章总结了董付国老师的Pthon程序设计(第2版)书的内容,仅供个人学习使用,如有侵权,立刻删除 by:mfdy
文章链接:mfdy’s blog: Python 序列
CSDN目录:https://blog.csdn.net/mofadiyu/article/details/90178542
元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可以修改其元素
元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“()”中,而不是方括号中。
a_tuple = ('a', 'b', 'asd', 'qweasdzxc')
包含一个元素的元组,最后必须写个逗号
a_tuple = (3,)
>>> a_tuple
(3,)
a_tuple = (3)
>>> a_tuple
(3)
也可以这样创建
a_tuple = 3,
>>> a_tuple
(3,)
空元组
x = ()
aList = [1, 2, 3]
a_Tuple = tuple(aList)
>>> a_Tuple
(1, 2, 3)
b_Tuple = tuple('asd')
>>> b_Tuple
('a', 's', 'd')
x, y, z = 1, 2, 3
>>> print(x, y, z)
1 2 3
x, y, z = range(3)
>>> print(x, y, z)
0 1 2
x, y, z = iter([1, 2, 3])
x, y, z = map(str, range(3))
>>> print(x, y, z)
0 1 2
a, b = b, a
x, y, z = sorted([1, 3, 2])
a, b, c = 'ABC'
s = {'a':1, 'b':2, 'c':3}
b, c, d = s.items()
>>> b
('a', 1)
# 使用字典时不用太多考虑元素的顺序
b, c, d = s
>>> b
'a'
b, c, d = s.values()
>>> print(b, c, d)
1 2 3
生成器推导式的结果是一个生成器对象。使用生成器对象的元素时,可以根据需要将其转化为列表或元组,也可以使用生成器对象__next__()方法或内置函数next()进行遍历,或者直接将其作为迭代器对象来使用。
生成器对象具有惰性求值的特点,只在需要时生成新元素,比列表推导式具有更高的效率,空间占用非常少,尤其适合大数据处理的场合。
不管用哪种方法访问生成器对象,都无法再次访问已访问过的元素。
g = ((i+2)**2 for i in range(10))
>>> g
<generator object <genexpr> at 0x0000011B65812570>
a_tuple = tuple(g)
>>> a_tuple
(4, 9, 16, 25, 36, 49, 64, 81, 100, 121)
g = ((i+2)**2 for i in range(10))
aList = list(g)
>>> aList
[4, 9, 16, 25, 36, 49, 64, 81, 100, 121]
# 使用生成器对象__next__()方法或内置函数next()进行遍历
g = ((i+2)**2 for i in range(10))
# 使用生成器对象的__next__()方法获取元素
>>> g.__next__()
4
>>> g.__next__()
9
>>> next(g)
16