Python 获取二维列表的每个第一个元素

Python 获取二维列表的每个第一个元素,python,arrays,list,Python,Arrays,List,有没有办法让我得到每一个第一/第二/第三/。。。二维列表的元素,例如来自列表的元素 list = [[1,2], [3,4], [5, 6]] 获取值1,3,5,还是仅在循环中才可能?因为如果我想做的话,循环不是很实用 If 2 in list: ... 一份清单就行了。可以分别为每个元素编制索引: firsts = [x[0] for x in lst] # [1,3,5] seconds = [x[1] for x in lst] # [2,4,6] # etc 如果需要,您可以在

有没有办法让我得到每一个第一/第二/第三/。。。二维列表的元素,例如来自列表的元素

list = [[1,2], [3,4], [5, 6]]
获取值1,3,5,还是仅在循环中才可能?因为如果我想做的话,循环不是很实用

If 2 in list:
...

一份清单就行了。可以分别为每个元素编制索引:

firsts = [x[0] for x in lst]  # [1,3,5]
seconds = [x[1] for x in lst]  # [2,4,6]
# etc
如果需要,您可以在线使用列表理解:

if 2 in [x[1] for x in lst]:
    print("Found 2 in a sublist")

您可以使用
zip
转换列表:

lst = [[1,2], [3,4], [5, 6]]
lst_transp = list(zip(*lst))

print(lst_transp)
# output: [(1, 3, 5), (2, 4, 6)]
你可以用地图

l = [[1,2], [3,4], [5, 6]]
result = map(lambda x: x[0], l)
print(list(result))

通常,要浏览二维列表,您需要嵌套一系列循环,以便根据需要访问子元素。对于(列表中的所有元素)对于(每个元素中的所有元素)如果(x然后y)…除了递归(从技术上讲不是循环)之外,我还可以这样说,如果没有循环,你就做不到这回答了你的问题吗?在条件中使用生成器表达式而不是列表理解将允许条件在找到目标元素时短路。对于大多数大小合理的列表,性能增益是最小的,但仍然值得注意。生成器将使用更少的内存,但可能需要更长的时间,即使是短路,因为在生成器上迭代要比在列表上迭代慢得多<代码>列表中的999(范围(1500))几乎是
列表中的999(范围(1500))
的两倍,甚至考虑到首先构建列表所需的时间(每个循环37微秒vs 65)。我自己的测试表明
x在列表中(范围(n))
x在[i在范围(n)]和
x在(i在范围(n)内)
,但无论是否发生短路,生成器表达式都比列表理解速度快。但是,如果短路直到大约70%的路径(在我的测试中)才发生,并且
数据
是预定义的列表,
x in[i代表i in数据]
x in快(数据中的i代表i)
。列表理解仍然会占用更多空间,尽管这应该不那么重要,除非列表非常大。