(1)迭代
- 迭代操作就是对于一个集合,无论该集合是有序还是无序
- 集合是指包含一组元素的数据结构,我们已经介绍的包括:
- 有序集合:list,tuple,str和unicode;
- 无序集合:set
- 无序集合并且具有 key-value 对:dict
- 迭代与按下标访问数组最大的不同是
- 后者是一种具体的迭代实现方式
- 前者只关心迭代结果,根本不关心迭代内部是如何实现的
- 迭代永远是取出元素本身,而非元素的索引
(2)几种迭代方法
L = ['Adam', 'Lisa', 'Bart']
T = ('Adam', 'Lisa', 'Bart')
S = set(['Adam', 'Lisa', 'Bart'])
D = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
# 结果都是
# Adam
# Lisa
# Bart
for item in L:
print(item)
for item in T:
print(item)
for item in S:
print(item)
# dict迭代的是key
for item in D:
print(item)
- enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身
L = ['Adam', 'Lisa', 'Bart']
T = ('Adam', 'Lisa', 'Bart')
S = set(['Adam', 'Lisa', 'Bart'])
D = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
# 结果都是
# (0, 'Adam')
# (1, 'Lisa')
# (2, 'Bart')
for item in enumerate(L):
print(item)
for item in enumerate(T):
print(item)
for item in enumerate(S):
print(item)
for item in enumerate(D):
print(item)
# 结果都是
# 0 Adam
# 1 Lisa
# 2 Bart
for index,name in enumerate(L):
print(index,name)
for index,name in enumerate(T):
print(index,name)
for index,name in enumerate(S):
print(index,name)
for index,name in enumerate(D):
print(index,name)
str = 'abc'
# a
# b
# c
for item in str:
print(item)
# (0, 'a')
# (1, 'b')
# (2, 'c')
for item in enumerate(str):
print(item)
(3)dict的额外迭代方法
- values():dict转换成一个包含所有value的list
- keys():dict转换成一个包含所有key的list
D = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
# 95
# 85
# 59
for item in D.values():
print(item)
# Adam
# Lisa
# Bart
for key in D.keys():
print(key)
- items() :dict对象转换成了包含tuple的list,tuple[0]表示key,tuple[1]表示value
D = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
# <class 'tuple'> ('Adam', 95)
# <class 'tuple'> ('Lisa', 85)
# <class 'tuple'> ('Bart', 59)
for item in D.items():
print(type(item),item)
# Adam 95
# Lisa 85
# Bart 59
for key,value in D.items():
print(key,value)
网友评论