Python 学习笔记(1)元组,列表,字典
python 元组 操作及方法
一、元组
是一个固定长度,不可改变的Python序列对象
a,从元组的开头“摘取”几个元素
a,b,*_=(1,2,3,4,5,6,7)
in: a
out :1
in :b
out: 2
in: *_
out :(3,4,5,6,7)
b,tuple的count方法
a=(2,3,4,5,5,5,5,6,7)
in:a.count(5) #获取5出现的次数
out:4
二、列表
a.列表是内容可变,长度可变的 pytyon对象
In [36]: a_list = [2, 3, 7, None]
In [37]: tup = ('foo', 'bar', 'baz')
In [38]: b_list = list(tup)
#列表内容可修改
In:b_list[0]="nba"
In:b_list
out:("nba","bar","baz")
b,列表和元组的语义接近,在许多函数中可以交叉使用。
list
函数常用来在数据处理中实体化迭代器或生成器:
In [42]: gen = range(10)
In [43]: gen
Out[43]: range(0, 10)
In [44]: list(gen)
Out[44]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c,bisect的使用
#bisect模块支持二分查找,和向已排序的列表插入值。bisect.bisect可以找到 插入值后仍保证排序的位置,bisect.insort是向这个位置插入值: In [67]: import bisect In [68]: c = [1, 2, 2, 2, 3, 4, 7] In [69]: bisect.bisect(c, 2) Out[69]: 4 In [70]: bisect.bisect(c, 5) Out[70]: 6 In [71]: bisect.insort(c, 6) In [72]: c Out[72]: [1, 2, 2, 2, 3, 4, 6, 7] #注意:bisect模块不会检查列表是否已排好序,进行检查的话会耗费大量计算。因此,对未排序的列表使用bisect不会产生错误,但结果不一定正确。
d,切片
用切边可以选取大多数序列类型的一部分,切片的基本形式是在方括号中使用start:stop
:
In [73]: seq = [7, 2, 3, 7, 5, 6, 0, 1]
In [74]: seq[1:5]
Out[74]: [2, 3, 7, 5]
切片的起始元素是包括的,不包含结束元素。因此,结果中包含的元素个数是
stop - start
负数表明从后向前切片:
In [79]: seq[-4:]
Out[79]: [5, 6, 0, 1]
In [80]: seq[-6:-2]
Out[80]: [6, 3, 5, 6]
三、字典
字典可能是Python最为重要的数据结构。它更为常见的名字是哈希映射或关联数组。它是键值对的大小可变集合,键和值都是Python对象。创建字典的方法之一是使用尖括号,用冒号分隔键和值:
In [101]: empty_dict = {}
In [102]: d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]}
In [103]: d1
Out[103]: {'a': 'some value', 'b': [1, 2, 3, 4]}
可以用
del
关键字或pop
方法(返回值的同时删除键)删除值:In [112]: del d1[5]
In [114]: ret = d1.pop('dummy')
keys
和values
是字典的键和值的迭代器方法。虽然键值对没有顺序,这两个方法可以用相同的顺序输出键和值:
In [117]: list(d1.keys())
Out[117]: ['a', 'b', 7]
In [118]: list(d1.values())
Out[118]: ['some value', [1, 2, 3, 4], 'an integer']
用update
方法可以将一个字典与另一个融合:
In [119]: d1.update({'b' : 'foo', 'c' : 12})
In [120]: d1
Out[120]: {'a': 'some value', 'b': 'foo', 7: 'an integer', 'c': 12}
update
方法是原地改变字典,因此任何传递给update
的键的旧的值都会被舍弃。
用序列创建字典
常常,你可能想将两个序列配对组合成字典。下面是一种写法:
mapping = {}
for key, value in zip(key_list, value_list):
mapping[key] = value
因为字典本质上是2元元组的集合,dict可以接受2元元组的列表:
In [121]: mapping = dict(zip(range(5), reversed(range(5))))
In [122]: mapping
Out[122]: {0: 4, 1: 3, 2: 2, 3: 1, 4: 0}
后续=》setdefault