第2章
2.1 列表和元组(python除字符串外的另外两种序列结构)
2.1.1 列表
- 使用[]或list()创建列表
- 允许出现相同元素
- 列表由1个或者多个元素组成
- 适合利用顺序和位置定位某一元素
list1 = []
list1 = ['monday','huang','1','1','铭']
empty_list = list()
- 使用list()将其他数据类型转换成列表
>>>list('cat')
['c','a','t']
>>>a_tuple = ('huang','jian','ming')
>>>list(a_tuple)
['huang','jian','ming']
- 指定范围并使用切片提取元素
>>>marxes = ['huang','jian','ming']
>>>marxes[0:2]
['huang','jian']
>>>marxes[::2]
['huang','ming']
>>>marxes[::-2]
['ming','huang']
>>>marxes[::-1]
['ming','jian','huang']
- 列表操作
a_list.append('a_str')
list1.extend(list2)
list1 += list2
>>>a_list = ['huang','jian','ming']
>>>a_list.insert(1,'huang')
['huang','huang','jian','ming']
>>>del a_list[-3]
['huang','jian','ming']
a_list.remove('huang')
>>>a_list.pop(1)
'ming'
>>>a_list
['jian']
>>>a_list.index('huang')
0
>>>'huang' in a_list
True
>>>a_list = ['huang','huang','jian','ming']
>>>a_list.count('huang')
2
- 重新排列元素
- list.sort(reverse=True/False)会对原列表进行排序,改变原列表内容
- 通用函数sorted()则会返回排好序的列表副本,原列表内容不变
- 数字元素会默认地被排成从小到大的升序,字符串则会按照字母表顺序排序(可通过reverse=True/False转换)
- list2 = list1.copy()复制
- 使用=赋值和list.copy()不同,赋值后改变会影响原列表,复制则不会
2.1.2 元组(tuple元组不可变,一旦被定义就无法在进行增删改查等操作)
>>>empty_tuple = ()
()
>>>one_tuple = 'huang',
('huang',)
>>>marx_tuple = 'huang','jian'
('huang','jian')
>>>a_tuple = 'huang','jian','ming' >>>a,b,c = a_tuple
>>>a
'huang'
>>>b
'jian'
>>>c
'ming'
2.1.3 字典(dict)
- 与列表类似,但其中元素的顺序无关紧要,通过键值对的键(key)访问
- 键(key)可以是字符串和python中其他任意不可变类型(布尔型、整形、浮点型、元组、字符串等)
- 创建字典
>>>empty_dict = {
}
>>>a_dict = {
'name':'hjm','age':24}
>>>lol = [['name','hjm'],['age','24']]
>>>dict(lol)
{
'name':'hjm','age':'24'}
>>>lot = [('a','b'),('c','d')]
>>>dict(lot)
{
'a':'b','c':'d'}
>>>tol = (['name','hjm'],['age','24'])
>>>dict(tol)
{
'name':'hjm','age':'24'}
>>>los = ['ab','cd','ef']
>>>dict(los)
{
'a':'b','c':'d','e':'f'}
>>>a_dict = {
'name':'hjm'}
>>>a_dict['age'] = '24'
{
'name':'hjm','age':'24'}
>>>pythons = {
'name1':'h1',
'name2':'h2',
'name3':'h3'
}
>>>others = {
'age1':'m1',
'age2':'m2'
'name1':'m1'
}
>>>pythons.update(others)
>>>pythons
{
'name1':'m1','name2':'h2','name3':'h3','age1':'m1','age2':'m2'}
>>>del pythons['age2']
{
'name1':'m1','name2':'h2','name3':'h3','age1':'m1'}
- dict.clear()清除所有元素
- 使用 in 判断某个键是否存在一个字典中
>>>'name' in a_dict
True/False
>>>customers = {
'h':12,'j':23,'m':45}
>>>customers.keys()
dict_keys(['h','j','m'])
>>>list(customers.keys())
['h','j','m']
>>>customers.values()
dict_values([12, 23, 45])
>>>customers.items()
dict_items([('h', 12), ('j', 23), ('m', 45)])
- 同样使用=赋值,修改会影响原字典,使用dict.copy()不会影响原字典
2.1.4 集合
>>>empty_set = set()
set()
>>>a_set = {
0,2,4,6,8}
{
0,4,2,6,8}
>>>set('letters')
{
'l','e','t','r','s'}
>>>set(['huang','jian','ming'])
{
'huang','jian','ming'}
>>>set(('huang','jian','ming'))
{
'huang','jian','ming'}
>>>set({
'name':'hjm','sex':'man','stature':174})
{
'name','sex','stature'}
>>>drinks = {
'martini':{
'vodka','vermouth'},
'black russian':{
'vodka','kahlua'},
'white russian':{
'cream','kahlua','vodka'},
'manhattan':{
'rye','vermouth','bitters'},
'screwdriver':{
'orange juice','vodka'}
}
>>>for name,contents in drinks.items():
if 'vodka' in contents:
print(name)
screwdriver
martini
black russian
white russian
>>>for name,content in drinks.items():
if 'vodka' in content and not ('vermouth' in content or 'cream' in content):
print(name)
screwdriver
black russian
- 常用set集合运算
- 用&或set1.intersection(set2)获取集合的交集
- 用|或set1.union(set2)获取集合的并集(至少出现一个集合中的元素)
- 用-或set1.difference(set2)获取两个集合的差集(出现在第一个集合但不出现在第二个集合)
- 非常用set集合运算
- 用^或set1.symmetric_difference(set2)可以获得两个集合的异或集(仅在两个集合中出现一次)
- 用<=或set1.issubset(set2)可以判断一个集合是否是另一个集合的子集(第一个集合的所有元素都出现在第二集合中)
- 用>=或issuperset()判断是否是超集
- 真子集用<或>判断