2024-04-25 04:14:34 发布
网友
list(zip(['A','B','C'], [x for x in range(1,4)]))
我想重写上面的内容,让它在理解中发挥作用。下面是一个尝试:
[list(zip(['A','B','C'], x) for x in range(1,4))]
或者 [zip(['A','B','C'], x) for x in range(1,4)]
[zip(['A','B','C'], x) for x in range(1,4)]
它不起作用,出现了一个类型错误:zip参数#2必须支持迭代
我能知道哪里出了问题吗?你知道吗
你也可以用
>>> some_list = ['A', 'B', 'C'] >>> enumerate(some_list)
尽管这会给你相反的顺序,从零开始,作为一个iteratable而不是list(0, 'A'), (1, 'B'), (2, 'C')(Interable通常更有效)。如果您特别希望从1开始,可以传入要枚举的起始值作为第二个参数,然后还可以转换为列表:
(0, 'A'), (1, 'B'), (2, 'C')
>>> list(enumerate(some_list, 1)) [(1, 'A'), (2, 'B'), (3, 'C')]
不过,这仍然使这两对按与问题相反的顺序排列。你知道吗
当您希望从列表中获取索引和元素时,此技术很常见:
>>> for i, c in enumerate('ABC'): ... print i, c ... 0 A 1 B 2 C
[x for x in range(1,4)]只不过是list(range(1, 4)),所以使用:
[x for x in range(1,4)]
list(range(1, 4))
list(zip(['A', 'B', 'C'], range(1, 4)))
就这样吧。你知道吗
如果要使用列表理解,请替换list()调用:
list()
[(x, y) for x, y in zip(['A', 'B', 'C'], range(1, 4))]
但这和内部列表理解一样多余。你知道吗
您要做的是将单个元素传递给zip()函数,该函数只接受序列。你知道吗
zip()
实际上,您可以使用^{}的能力压缩传递的参数:
>>> map(None, ['A','B','C'], range(1,4)) # For python 2.x only [('A', 1), ('B', 2), ('C', 3)]
代码的错误是,它将数字传递给zip的第二个参数,而不是迭代器。你知道吗
你也可以用
尽管这会给你相反的顺序,从零开始,作为一个iteratable而不是list
(0, 'A'), (1, 'B'), (2, 'C')
(Interable通常更有效)。如果您特别希望从1开始,可以传入要枚举的起始值作为第二个参数,然后还可以转换为列表:不过,这仍然使这两对按与问题相反的顺序排列。你知道吗
当您希望从列表中获取索引和元素时,此技术很常见:
[x for x in range(1,4)]
只不过是list(range(1, 4))
,所以使用:就这样吧。你知道吗
如果要使用列表理解,请替换
list()
调用:但这和内部列表理解一样多余。你知道吗
您要做的是将单个元素传递给
zip()
函数,该函数只接受序列。你知道吗实际上,您可以使用^{} 的能力压缩传递的参数:
代码的错误是,它将数字传递给zip的第二个参数,而不是迭代器。你知道吗
相关问题 更多 >
编程相关推荐