<span style="font-size:14px;"># -*- coding: utf-8 -*-
#嵌套列表推导式
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
print [[row[i] for row in matrix] for i in range(4)]
#等价于
transposed = []
for i in range(4):
transposed.append([row[i] for row in matrix])
print transposed
#等价于
transposed2 = []
for j in range(4):
transposed_row = []
for row in matrix:
transposed_row.append(row[j])
transposed2.append(transposed_row)
print transposed2
#等价于
print zip(*matrix)
#实现行列转换
#结果:[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
print('-')*40
#元组和序列
t = 12345, 54321, 'hello!'
print t[0]
#结果:12345
u = t, (1, 2, 3, 4, 5)
print u
#结果:((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
x,y,z = t
print x,y,z
#结果:12345 54321 hello!
print('-')*40
#Set集合
'''
Set 是一个不包含重复元素的无序集合
花括号或set()方法都可以用来创建集合。注意如果你想要创建一个空集合,必须要用set()
而不能用{}。后者创建了一个空字典
'''
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print (basket)
#结果:set(['orange', 'pear', 'banana', 'apple']) 去除了重复元素
print 'orange' in basket
#结果:True
a = set('abracadabra')
print a
#结果:set(['a', 'r', 'b', 'c', 'd'])
b = set('alacazam')
print b
#结果:set(['a', 'c', 'z', 'm', 'l'])
print a - b
#结果:set(['r', 'b', 'd']) 在a 中但不在b 中
print a | b
#结果:set(['a', 'c', 'b', 'd', 'm', 'l', 'r', 'z']) 在a 或b 中
print a & b
#结果:set(['a', 'c']) 在a 且在b 中
print a ^ b
#结果:set(['b', 'd', 'm', 'l', 'r', 'z']) 在a 或在b 中,但不同时在两者中
print {x for x in 'abracadabra' if x not in 'abc'}
#结果:set(['r', 'd'])
print('-')*40
#字典
'''
不像序列能用数字可以索引,在字典中是任何一种不变类型的关键字keys
来查询。字符串和数字是常见的关键字。如果元组中仅仅包含字符串,数组或者重数,那
么元组也可以充当关键字。但是如果元组中直接或者间接包含可变的对象,那么元组就不能
做关键字。
你不能把列表用作关键字,因为列表在索引赋值,切片赋值以及方法append()和extend()
运用时可以改变本身值。
键字是无序的,如果你想要对关键字进行排序,可以用方法sorted(d.keys()).可以用in 关
键字来检查单个关键字是否在字典中。
'''
tel = {'jack': 4098, 'sape': 4139}
tel['guido'] = 4127
print tel
#结果:{'sape': 4139, 'jack': 4098, 'guido': 4127}
del tel['sape']
tel['irv'] = 4127
print tel
#结果:{'jack': 4098, 'irv': 4127, 'guido': 4127}
print list(tel.keys())
#结果:['jack', 'irv', 'guido']
print 'guido' in tel
#结果:True
#用dict函数构造一个字典
print dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
#结果:{'sape': 4139, 'jack': 4098, 'guido': 4127}
#字典利用复合表达式从随机的key 和value 的表达式中来创建字典。
print {x: x**2 for x in (2, 4, 6)}
#结果:{2: 4, 4: 16, 6: 36}
#当关键字是简单的字符串时,可以用关键字参数直接指定对象,这样有时会更加的容易。
print dict(sape=4139, guido=4127, jack=4098)
#结果:{'sape': 4139, 'jack': 4098, 'guido': 4127}
print('-')*40
#遍历
#当通过字典遍历数据时,用items()方法就可以同时把关键字和相对应的值从字典中取出。
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
print k,v
#结果:gallahad the pure
# robin the brave
#当用序列遍历数据时,用enumerate()可以同时把位置索引和对应的值得到。
for i, v in enumerate(['tic', 'tac', 'toe']):
print i, v
'''
结果:0 tic
1 tac
2 toe
'''
#想要同时遍历两个或多个序列时,可以用方法zip()把属性整合起来。
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
print('What is your {0}? It is {1}.'.format(q, a))
'''
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
'''
#想要倒叙遍历序列,首先正序指定遍历序列,然后调用方法reversed().
for i in reversed(range(1, 10, 2)):
print i,
#结果:9 7 5 3 1
#想要有序的遍历列表,用方法sorted()可以返回一个新的有序列表而不改变原先列表。
basket2 = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
for f in sorted(set(basket)):
print f,
#apple banana orange pear
string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
print string1 or string2
#结果:Trondheim
</span>
Python列表序列及字典的操作
最新推荐文章于 2022-04-10 10:25:23 发布