利用python进行数据分析第二版 (Python的数据结构,函数和文件)【1-1 数据结构和序列】

1.元组
元组是一个固定长度, 不可改变的Python序列对象。 创建元组的最简单方式, 是用
逗号分隔一列值:


当用复杂的表达式定义元组, 最好将值放到圆括号内, 如下所示:

1 In [3]: nested_tup = (4, 5, 6), (7, 8)
2 In [4]: nested_tup
3 Out[4]: ((4, 5, 6), (7, 8))

tuple 可以将任意序列或迭代器转换成元组:

1 In [5]: tuple([4, 0, 2])
2 Out[5]: (4, 0, 2)
3 In [6]: tup = tuple('string')
4 In [7]: tup
5 Out[7]: ('s', 't', 'r', 'i', 'n', 'g')

可以用方括号访问元组中的元素

1 In [8]: tup[0]
2 Out[8]: 's'

如果元组中的某个对象是可变的, 比如列表, 可以在原位进行修改:

1 In [9]: tup = tuple(['foo', [1, 2], True])
2 In [11]: tup[1].append(3)
3 In [12]: tup
4 Out[12]: ('foo', [1, 2, 3], True)

可以用加号运算符将元组串联起来:

1 In [13]: (4, None, 'foo') + (6, 0) + ('bar',)
2 Out[13]: (4, None, 'foo', 6, 0, 'bar')

元组乘以一个整数, 像列表一样, 会将几个元组的复制串联起来

1 In [14]: ('foo', 'bar') * 4
2 Out[14]: ('foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar'
3 )

拆分元组
如果你想将元组赋值给类似元组的变量, Python会试图拆分等号右边的值

1 In [15]: tup = (4, 5, 6)
2 In [16]: a, b, c = tup
3 In [17]: b
4 Out[17]: 5
5 即使含有元组的元组也会被拆分:
6 In [18]: tup = 4, 5, (6, 7)
7 In [19]: a, b, (c, d) = tup
8 In [20]: d
9 Out[20]: 7

使用这个功能, 你可以很容易地替换变量的名字, 其它语言可能是这样:
tmp = a
a = b
b = tmp
但是在Python中, 替换可以这样做:

 1 In [21]: a, b = 1, 2
 2 In [22]: a
 3 Out[22]: 1
 4 In [23]: b
 5 Out[23]: 2
 6 In [24]: b, a = a, b
 7 In [25]: a
 8 Out[25]: 2
 9 In [26]: b
10 Out[26]: 1

变量拆分常用来迭代元组或列表序列:

1 In [27]: seq = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
2 In [28]: for a, b, c in seq:
3 ....: print('a={0}, b={1}, c={2}'.format(a, b, c))
4 a=1, b=2, c=3
5 a=4, b=5, c=6
6 a=7, b=8, c=9

Python最近新增了更多高级的元组拆分功能, 允许从元组的开头摘取几个元素。
使用了特殊的语法 *rest , 这也用在函数签名中以抓取任意长度列表的位置参
数:

1 In [29]: values = 1, 2, 3, 4, 5
2 In [30]: a, b, *rest = values
3 In [31]: a, b
4 Out[31]: (1, 2)
5 In [32]: rest
6 Out[32]: [3, 4, 5]

rest 的部分是想要舍弃的部分, rest的名字不重要。 作为惯用写法, 许多Python
程序员会将不需要的变量使用下划线:

In [33]: a, b, *_ = values 

tuple方法
因为元组的大小和内容不能修改, 它的实例方法都很轻量。 其中一个很有用的就
count ( 也适用于列表) , 它可以统计某个值得出现频率 :

1 In [34]: a = (1, 2, 2, 2, 3, 4, 2)
2 In [35]: a.count(2)
3 Out[35]: 4

2.列表


与元组对比, 列表的长度可变、 内容可以被修改。 你可以用方括号定义, 或
list 函数:


 

猜你喜欢

转载自www.cnblogs.com/ucasljq/p/11627734.html
今日推荐