利用python进行数据分析(二)

第3章 内建数据结构,函数及文件

3.1.1 元组

a) 元组是一种固定长度、不可变的python对象序列,创建元组最简单的办法就是用逗号分隔序列值,通常情况下用括号括起来更明了。
b) 虽然元组中储存的对象其自身是可变的,如列表,但元组一旦被创建,各个位置的对象是无法被修改的:假设元组中某个位置对象为列表,那你可以在这个列表内部修改列表,但是不可以修改此处列表为其他对象。
c) 使用“+”将两个元组连在一起,使用“*”乘以整数生成含有多个拷贝的元组,元组支持切片操作。

>>>tup = 1234
>>>tup
(1, 2, 3, 4)
#可以使用tuple函数将任意序列或者迭代器转换为元组。
>>>tuple([1, 2, 3])
(1, 2, 3)
>>>('a', 'b') + ('c', 'd')
('a', 'b', 'c', 'd')
>>>('a', 'b', 'c') * 3
('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
>>>tup[0:2]
(1, 2)

d) 元组拆包是将元组型表达式赋值给变量:将"="右边的元组的元素拆开,赋值给"="左边的多个变量,要求"="左边的变量个数必须与元组中元素的长度一致。

>>>tup = 1, 2, 3 #元组初始化
>>>a, b, c = tup   #元组拆包
>>>a
1

即使是嵌套的元组也可以拆包,还是注意"="左右两边的变量个数即可。

>>>tup = 4, 5, (6, 7)
>>>a, b, (c, d) = tup
>>>d
7

*rest语法用于在元组的起始位置采集一些元素,而将其余的放进rest中,rest为列表类型(虽然元组是支持切片操作的,但是*rest语法返回的结果并不是由剩余元素组成的元组,而是一个列表);这样当我们可以取得元组中我们想要的前面的元素而不用担心"="左右两边变量个数是否一致的问题了。通常python编程者会使用下划线(_)来表示不想要的变量。

>>>tup = 1, 2, 3, 4, 5
>>>a, b, *rest = tup
>>>a
1
>>>rest
[3, 4, 5]

>>>type(rest)
<class 'list'>

>>>a, b, *_ = tup
>>>_
[3, 4, 5]

拆包的一个常用场景就是遍历元组或列表组成的序列,可以简化代码。

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

事实上,所有的可迭代对象都是可以进行拆包操作的。

>>>lista = [1, 2, 3]
>>>a, b ,c = lista
>>>a
1

e)count方法用于计量某个数值在元组中出现的次数:

>>>tup = 'a', 'a', 'b', 'c', 'e', 'e', 'e', 'f'
>>>tup.count('e')
3

3.1.2 列表

a) 列表的长度是可变的,所包含的内容也是可以修改的。使用list函数将迭代器或者生成器转换为列表。
b) 使用append(x)方法可以将元素添加到列表的尾部;使用insert(n, x)方法可以将元素插入到指定位置,需要提供插入的位置参数;与insert相对应的是pop(n),不指定位置参数时默认移除最后的元素,提供参数时移除指定位置的元素;通过remove(x)移除相应元素,但有多个相同元素时只移除第一个元素。
c) 使用"in""not in"检查一个值是否在列表中,与字典、集合的检查相比,这个过程十分缓慢。
d) extend方法可以向列表中添加多个元素,它与append的区别为:
extend会将列表、元组中的元素在列表尾部逐一加入,append是将整个对象在末尾加入。如果向extend传入的是字典,则加入字典的键。因此使用extend可以将两个列表连接在一起,使用"+"也可以将两个列表联系在一起,但前者的消耗更小速度更快。

>>>lista = [1, 2, 3, 4]
>>>listb = [1, 2, 3, 4]
>>>listc = [1, 2, 3, 4]
>>>tup = ('a', 'b')
>>>ditc = {'c':1, 'd':2}
>>>lista.append(tup)
>>>lista
[1, 2, 3, 4, ('a', 'b')]
>>>listb.extend(tup)
>>>listb
[1, 2, 3, 4, 'a', 'b']
>>>listc.extend(ditc)
>>>listc
[1, 2, 3, 4, 'c', 'd']

e) 使用list.sort()方法对列表进行内部排序,这会直接改变列表,而无需新建一个对象。使用reverse= True,降序排序;通过传递参数key进行其他操作。

>>>lista = ['ap', 'ad', 'adc', 'jul', 'h', 'kkkk']
>>>lista.sort()
>>>lista
>>>['ad', 'adc', 'ap', 'h', 'jul', 'kkkk']
#降序
>>>lista.sort(reverse=True)
>>>lista
['kkkk', 'jul', 'h', 'ap', 'adc', 'ad']
#key=len:按字符串长度排序
>>>ista.sort(key=len)
>>>lista
['h', 'ap', 'ad', 'jul', 'adc', 'kkkk']

f) 切片,通过切片可以选取某个列表的子集;通过将步进值设为-1,可以对列表进行翻转。

>>>lista = ['ap', 'ad', 'adc', 'jul', 'h', 'kkkk']
>>>lista[::-1]
['kkkk', 'h', 'jul', 'adc', 'ad', 'ap']

你可能感兴趣的:(利用python进行数据分析,python)