Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
压缩对python的理解_Python_Zip_List Comprehension - Fatal编程技术网

压缩对python的理解

压缩对python的理解,python,zip,list-comprehension,Python,Zip,List Comprehension,我想重写上面的内容,让它在理解中发挥作用。以下是一个尝试: list(zip(['A','B','C'], [x for x in range(1,4)])) 或 [zip(['A','B','C'],x)代表范围(1,4)内的x] 它不起作用,出现了一个类型错误:zip参数#2必须支持迭代 我可以知道哪里出了问题吗 [x代表范围(1,4)]只不过是列表(范围(1,4)),所以使用: [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)代表范围(1,4)内的x]

它不起作用,出现了一个类型错误:zip参数#2必须支持迭代

我可以知道哪里出了问题吗

[x代表范围(1,4)]
只不过是
列表(范围(1,4))
,所以使用:

[list(zip(['A','B','C'], x) for x in range(1,4))]
就这样吧

如果必须使用列表理解,请替换
list()
调用:

list(zip(['A', 'B', 'C'], range(1, 4)))
但这和内部列表理解一样多余

您试图做的是将单个元素传递给
zip()
函数,该函数只接受序列。

[x代表x在范围(1,4)]
只不过是
列表(范围(1,4))
,因此请使用:

[list(zip(['A','B','C'], x) for x in range(1,4))]
就这样吧

如果必须使用列表理解,请替换
list()
调用:

list(zip(['A', 'B', 'C'], range(1, 4)))
但这和内部列表理解一样多余

您试图做的是将单个元素传递给只接受序列的
zip()
函数。

您实际上可以使用的功能压缩传递的参数:

[(x, y) for x, y in zip(['A', 'B', 'C'], range(1, 4))]
代码中的错误是,它将数字传递给zip的第二个参数,而不是迭代器。

您实际上可以使用的功能压缩传递的参数:

[(x, y) for x, y in zip(['A', 'B', 'C'], range(1, 4))]
代码中的错误是,它将数字传递给zip的第二个参数,而不是迭代器。

您也可以使用

>>> map(None, ['A','B','C'], range(1,4)) # For python 2.x only
[('A', 1), ('B', 2), ('C', 3)]
虽然这会以相反的顺序给出对,从零开始,作为一个iteable,而不是list
(0,'a'),(1,'B'),(2,'C')
(但Interable通常更有效)。如果您特别希望从1开始,可以将开始值作为第二个参数传递给enumerate,然后还可以转换为列表:

>>> some_list = ['A', 'B', 'C']
>>> enumerate(some_list)
尽管如此,这仍然给出了与问题相反的配对顺序

当您希望从列表中获取索引和元素时,此技术很常见:

>>> list(enumerate(some_list, 1))
[(1, 'A'), (2, 'B'), (3, 'C')]
你也可以使用

>>> map(None, ['A','B','C'], range(1,4)) # For python 2.x only
[('A', 1), ('B', 2), ('C', 3)]
虽然这会以相反的顺序给出对,从零开始,作为一个iteable,而不是list
(0,'a'),(1,'B'),(2,'C')
(但Interable通常更有效)。如果您特别希望从1开始,可以将开始值作为第二个参数传递给enumerate,然后还可以转换为列表:

>>> some_list = ['A', 'B', 'C']
>>> enumerate(some_list)
尽管如此,这仍然给出了与问题相反的配对顺序

当您希望从列表中获取索引和元素时,此技术很常见:

>>> list(enumerate(some_list, 1))
[(1, 'A'), (2, 'B'), (3, 'C')]

谢谢我使用3.3.2并将代码放入将显示“NoneType”对象不可调用。@午后,嗯,我从来不知道发生了什么。看一看,谢谢。我使用3.3.2并将代码放入将显示“NoneType”对象不可调用。@午后,嗯,我从来不知道发生了什么。看一看,谢谢枚举(___;,1))真的很有效。在尝试第三个代码时,我得到了一个“SyntaxError:invalid syntax”。它使“我”亮起红灯。我可以知道I和c代表什么吗?谢谢枚举(___;,1))真的很有效。在尝试第三个代码时,我得到了一个“SyntaxError:invalid syntax”。它使“我”亮起红灯。我可以知道I和c代表什么吗?虽然多余但对我来说很清楚。你知道我还在学习。如果type以[(x,y)for…]开头,那么在阅读所有代码之前,我就知道它是什么类型以及它将产生多少元素。所以对我来说,这个列表(zip(['A','B','C'],范围(1,4))比理解要长,虽然是多余的,但对我来说是清楚的。你知道我还在学习。如果type以[(x,y)for…]开头,那么在阅读所有代码之前,我就知道它是什么类型以及它将产生多少元素。所以对我来说,这个列表(zip(['A','B','C',],范围(1,4)))比理解要长。