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

时间:2018-04-10 12:44:09

标签: python list indexing list-comprehension min

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

  

第一个元素=(' 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])

2 个答案:

答案 0 :(得分:2)

您可以使用列表解析:

[x[2] for x in ListOfElements]

这通常被认为是#34; Pythonic"方法

您还可以使用以下方式找到最小的时间:

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

一些一般性说明:

  1. 使用下划线的python是标准而不是CamelCase。
  2. 在python中,你几乎不必使用显式的for循环。而宁愿 悟性或功能模式(mapapply等。)

答案 1 :(得分:0)

您可以使用itemgetter map列出>>> 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] 列表。

value="false"

然后你可以用你的方法找到最小值的位置。