Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Tuples_List Comprehension - Fatal编程技术网

Python 使用列表理解从元组列表中提取第一个元素

Python 使用列表理解从元组列表中提取第一个元素,python,list,tuples,list-comprehension,Python,List,Tuples,List Comprehension,我有一个元组列表,我想将每个元组的第一个元素提取到另一个列表中。 我有一个名为lst的元组列表,并试图将元素提取到名为lst2的列表中,得到的结果是: >>> lst = [(1, 2), (3, 4), (5, 6)] >>> lst2 = [] >>> [lst2[i] = lst[i][0] for i in range(len(lst))] File "<stdin>", line 1 [l

我有一个元组列表,我想将每个元组的第一个元素提取到另一个列表中。 我有一个名为lst的元组列表,并试图将元素提取到名为lst2的列表中,得到的结果是:

>>> lst = [(1, 2), (3, 4), (5, 6)]
>>> lst2 = []
>>> [lst2[i] = lst[i][0] for i in range(len(lst))]
  File "<stdin>", line 1
    [lst2[i] = lst[i][0] for i in range(len(list))]
              ^
SyntaxError: invalid syntax
所需输出为[1,3,5]


你能帮我找出这个语法的错误吗?

在列表理解中,只有表达式可以出现。list2[i]=list[i][0]是一个赋值语句

而且,您不需要使用索引来访问项目。只需迭代列表

>>> lst = [ (1,2), (3,4), (5,6)]
>>> lst2 = [x[0] for x in lst]
>>> lst2
[1, 3, 5]
顺便说一句,不要使用列表作为变量名。它隐藏了内置类型/函数。

使用lst和lst2作为变量名,正如其他人所指出的那样,使用列表是一个错误的选择

你不需要索引。使用索引通常被认为是不好的形式

lst2=[lst中的对为对[0]

如果你真的,真的需要索引,做一些数学之类的

lst2=[lst[i][0]表示i,在enumeratelst中成对]


如果您需要操作二维数字矩阵,您可能希望了解numpy并了解numpy.matrix和numpy.array。

在一行中循环列表时,不能使用equals运算符设置变量。你可以这样做:

list = [ (1,2), (3,4), (5,6)]
list2 = []
[list2.append(list[i]) for i in range(len(list))]

另一种方法是使用zip:


但是,如果您只需要一个列表,这会有点浪费。

非常感谢!关于列表:我知道,我只在终端运行时使用列表作为变量名。@coding_brainfart,即使在交互式shell中,我也建议不要使用列表。一旦你使用它,你就不能做类似于:列出“abc”这样的事情了。@coding_brainfart-Guido Python的创建者建议在名称后面加上后缀,否则会用下划线隐藏内置的内容。例如,您可以使用list_u代替list。我经常看到出现这种情况的地方是id,以避免隐藏内置函数id。您可以,但确实不应该:1其他人已经提到使用列表作为变量名,但我想你只是从问题中复制了这个名称。2在rangelensome_列表中使用for i很少是必要的,因为我们可以直接迭代序列类型。3 list.append返回None,因此创建一个满是“None”的列表是浪费时间,然后将其丢弃。
>>> lst = [(1,2), (3,4), (5,6)]
>>> zip(*lst)
[(1, 3, 5), (2, 4, 6)]
>>> zip(*lst)[0]
(1, 3, 5)
>>> list(zip(*lst)[0])
[1, 3, 5]