2.7 循环 (四)
for循环可以构建推导式——从一个数据序列构建另数据序列的方法
In [90]:
random_numbers = list(range(10))
random_numbers
Out[90]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#运用for循环在上个列表的基础上定义一个新列表,较麻烦,下面是简单方法
In [91]:
new_numbers = []
for number in random_numbers:
new_numbers.append(number*10) #append 翻译:增加
new_numbers
Out[91]:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
(for循环构建的)列表推导式
#简单方法
In [92]:
new_numbers = [number*10 for number in random_numbers]
new_numbers
Out[92]:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
(for循环构建的)字典推导式
In [95]:
dict_numbers = {number: 'A' for number in random_numbers}
dict_numbers
Out[95]:
{0: 'A',
1: 'A',
2: 'A',
3: 'A',
4: 'A',
5: 'A',
6: 'A',
7: 'A',
8: 'A',
9: 'A'}
(for循环构建的)元组推导式
In [96]:
tuple_numbers = [number*10 for number in random_numbers]
tuple_numbers
Out[96]:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
问:视频中未运行出,引出生成器
生成器
#列表
In [97]: list(tuple_numbers)
Out[97]: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
#元组
In [98]: tuple(tuple_numbers)
Out[98]: (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
问:视频中讲到生成器只能生产一次,这里第二次也能生成
2.8 函数 (一)
#有一个字典类型的变量,可以找到a对应的值是100
In [99]:
varibal ={
'a': 100,
'b': 100,
'c': 200
}
In [100]:
varibal['a']
Out[100]:
100
#把字典转换为一个列表
In [101]: varibal.items()
Out[101]: dict_items([('a', 100), ('b', 100), ('c', 200)])
#找100对应的所以的值
In [102]: [key for key,value in varibal.items() if value ==100]
# value in varibal 翻译 :变量中的值
#items() if value ==100 翻译:items 中的值如果等于100
Out[102]: ['a', 'b']
避免粘贴复制
函数——抽象概念
#用函数表示寻找字典的值
In [103]:
def get_keys(dict_varibal,value): # dict_varibal 翻译:字典变量
return[key for key,value in dict_varibal.items() if value ==100]
In [104]: get_keys(varibal,100)
Out[104]: ['a', 'b']
In [105]: get_keys(varibal,200)
Out[105]: ['a', 'b']
问:有问题,下面是正确的,视频没讲,只是改正确了
In [106]:
def get_keys(dict_varibal,value):
return[k for k,v in dict_varibal.items() if v == value]
In [107]: get_keys(varibal,200)
Out[107]: ['c']