python频繁地使用迭代器,一般我们用for进行迭代。
显然zip会咋爱最短的序列“用完”时候停止。注意zip返回的是可迭代变量。所以你可以list()函数把它变成list!
list(zip(names,ages))当然也可以用dict()把可迭代对象变成字典。
[expression for item in iterable] [expression for item in iterable if condition]
a_list = [number*100 for number in range(1,6) if number % 2 == 1] #也可以使用多重循环 rows = range(1,2) cols = range(1,3) ceils = [(row, col) for row in rows for col in cols] #构建(row, col)元组字典,集合类似。 注意:推导式只适用于列表,字典和集合。 元组没有推导式
>>> t = ('cc',12) >>> t ('cc', 12) >>> l = (v for v in t) >>> l #这里变成一个生成器对象了!并不是元组! <generator object <genexpr> at 0x7f21059a3830>所以你可以用for对生成器对象l进行迭代。 我想你可能更希望是这样! 既然list()可以把可迭代对象转换成列表,所以
l = list(v for v in t) # 话说你为啥不直接 l = list(t)呢?因此,要对元组进行推导式迭代,先转换成list吧。
对于列表,元组,字典,集合,都是如此。 如果直接用=,是引用。。
a = [1,2] b = a.copy()用()创建,有list大部分的函数,不过元素不可变。 元组与列表相比: - 元组所占空间小 - 可以作为字典的键 - 命名元组可以作为对象的替代 - 函数的参数以元组的形式传递
字典和集合没什么好说的。。
