谁能解释一下:
听写列表为:
dict_list = [
{'a':1, 'b':3},
{'a':2, 'b':4}
]
然后输入以下代码:
1 print('length: ' + str(len(dict_list)))
2 filtered_dict_list = filter(lambda d: d['a'] == 1, dict_list)
3 print('length: ' + str(len(list(filtered_dict_list))))
4 dict_list = list(filtered_dict_list)
5 print('length: ' + str(len(dict_list)))
将打印:
length: 2
length: 1
length: 0
字典列表在代码中永远消失了
通过切换3号线和4号线:
1 print('length: ' + str(len(dict_list)))
2 filtered_dict_list = filter(lambda d: d['a'] == 1, dict_list)
3 dict_list = list(filtered_dict_list)
4 print('length: ' + str(len(list(filtered_dict_list))))
5 print('length: ' + str(len(dict_list)))
我们得到:
length: 2
length: 0
length: 1
并且可以继续使用我们过滤的dict\u列表
在python3中,
filter()
返回一个filter
对象,它是一个惰性生成器,不会像python2的filter()
那样自动生成一个list
对象。在代码中,只需更改先打印哪个结果。你知道吗在第二个街区:
并不是
print()
的叫声让发电机排气,而是list()
的叫声。如果您将filtered_dict_list
发送到print()
,而不首先将其发送到list()
,它将打印类似<filter object at 0x0000000003E32470>
的内容。你知道吗相关问题 更多 >
编程相关推荐