Pythonのリストと辞書の遍歴
5025 ワード
リスト、辞書の遍歴には多くのテクニックがあり、簡潔で優雅なコードをどのように書くかは、次の知識が必要かもしれません.リスト を巡る辞書 を巡るリスト反復器 ディクショナリ反復器 リスト生成式 辞書生成式 リストジェネレータ リストの遍歴 を巡回する. を巡回する.は、 を巡回する.
辞書の遍歴 の値を持つ辞書を巡る 辞書を巡る を遍歴する. を遍歴する.
リスト反復
上記の遍歴方式はメモリを非常に消費し、反復器を使用してメモリの使用を大幅に削減します.
ディクショナリ反復器 を巡回する. を巡回する. を巡回する.
リスト生成
リスト生成式基本構文:ネストリスト生成式 関数付きリスト生成式
ディクショナリ生成式
辞書生成式はリスト生成式とよく似ていて、一つの例を直接見ます.
リストジェネレータ
リストジェネレータは、 next()方式 遍歴方式
リスト要素list = ['zhangsan', 'lisi', 'wanger', 'mazi']
for value in list:
print value
zhangsan
lisi
wanger
mazi
を利用してリスト要素list = ['zhangsan', 'lisi', 'wanger', 'mazi']
for i in range(len(list)):
print list[i]
zhangsan
lisi
wanger
mazi
を使用してリストの
および
のlist = ['zhangsan', 'lisi', 'wanger', 'mazi']
for i, value in enumerate(list):
print i, value
0 zhangsan
1 lisi
2 wanger
3 mazi
辞書の遍歴
辞書要素を巡りkey dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for key in dict:
print key, dict[key]
age 20
name zhangsan
sex man
key
dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for key in dict.keys():
print key, dict[key]
age 20
name zhangsan
sex man
value
dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for value in dict.values():
print value
20
zhangsan
man
を利用して辞書の
とkey
dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for key, value in enumerate(dict):
print key, value
0 age
1 name
2 sex
items
を利用して辞書のkey
とvalue
dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for key, value in dict.items():
print key, value
age 20
name zhangsan
sex man
リスト反復
上記の遍歴方式はメモリを非常に消費し、反復器を使用してメモリの使用を大幅に削減します.
list = ['zhangsan', 'lisi', 'wanger', 'mazi']
for value in iter(list):
print value
zhangsan
lisi
wanger
mazi
ディクショナリ反復器
items
の反復器を用いて辞書dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for key, value in dict.iteritems():
print key, value
age 20
name zhangsan
sex man
keys
の反復器を用いて辞書dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for key in dict.iterkeys():
print key, dict[key]
age 20
name zhangsan
sex man
values
の反復器を用いて辞書dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
for value in dict.itervalues():
print value
20
zhangsan
man
リスト生成
リスト生成式基本構文:
[exp for iter_var in iterable]
フィルタ機能付き:[exp for iter_var in iterable if_exp]
ネストループ:[exp for iter_var1 in iterable1 for iter_var2 in iterable2 if_exp]
list1 = [1, 2, 3]
list2 = [4, 5]
print [x * y for x in list1 for y in list2 if x > 1 and y < 5]
[8, 12]
def handle(x, y):
if y == 2:
return [x, x]
if y == 3:
return [x, x, x]
list1 = [1, 2, 3]
list2 = [2, 3]
print [handle(x, y) for x in list1 for y in list2]
[[1, 1], [1, 1, 1], [2, 2], [2, 2, 2], [3, 3], [3, 3, 3]]
ディクショナリ生成式
辞書生成式はリスト生成式とよく似ていて、一つの例を直接見ます.
dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
print {key: value for key, value in dict.items()}
{'age': '20', 'name': 'zhangsan', 'sex': 'man'}
リストジェネレータ
リストジェネレータは、
[]
を()
に変更し、next()
、または
を使用して要素を取得することができます.なぜジェネレータといえば、リストの長さが長い場合、メモリがかかりすぎるため、ジェネレータを使用すると毎回推定された現在の要素であり、すべての要素を一度に保存していないのは、前述した反復器と同じ理屈です.a = (i for i in range(5))
print next(a)
print next(a)
print next(a)
print next(a)
print next(a)
0
1
2
3
4
b = (i for i in range(6,10,1))
for i in b:
print i
6
7
8
9