Python, 使变量等于数组的第二列

Python, Make variable equal to the second column of an array

我知道在其他地方也有人问过这个问题,但老实说,我不确定应该使用什么术语来搜索它。 但基本上我有一个包含不同数量元素的列表。每个元素包含 3 个值:一个字符串、另一个列表和一个整数,例如:

First element = ('A', [], 0)

所以

ListofElements[0] = [('A', [], 0)]

我想做的是创建一个新列表,其中包含 ListofElements 中给出的所有整数(元素中的第三项)。

我已经可以通过遍历 ListofElements 的每个元素然后将整数附加到此处显示的新列表来做到这一点:

NewList=[]
for element in ListofElements:
    NewList.append(element[2])

但是使用for循环似乎是最基本的方法,有没有使用更少代码的方法?也许是列表理解或类似的东西。看起来应该可以在一条线上完成的事情。


这只是我最终目标的一个步骤,我的最终目标是找出 ListofElements 中具有最小整数值的元素的索引。所以到目前为止我的过程是创建一个新列表,然后使用以下方法找到该新列表的整数索引:

index=NewList.index(min(NewList))

有没有一种方法可以避免完全创建新列表并直接从原始 ListofElements 生成索引?我卡住了我需要在这里填写的内容,或者我将如何遍历:

min(ListofElements[?][2])

您可以使用列表自含:

[x[2] for x in ListOfElements]

这通常被认为是一种 "Pythonic" 方法。

您还可以使用以下方式以相当时尚的方式找到最小值:

minimum = min(ListOfElements, key=lambda x: x[2])
index = ListOfElements.index(minimum)

一些一般注意事项:

  1. 在 python 中使用下划线而不是 CamelCase 是标准。
  2. 在 python 中,您几乎不必使用显式 for 循环。反而更喜欢 理解或功能模式(mapapply 等)

您可以 map 您的列表 itemgetter:

>>> from operator import itemgetter
>>> l = [(1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3)]
>>> map(itemgetter(2), l)
[3, 3, 3, 3, 3]

那你就可以按照你的方法去找最小值的位置了。