我意识到在其他地方有人问过这个问题,但说实话,我不确定我应该用什么术语来搜索它。 但基本上我有一个包含不同数量元素的列表。每个元素包含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])
答案 0 :(得分:2)
您可以使用列表解析:
[x[2] for x in ListOfElements]
这通常被认为是#34; Pythonic"方法
您还可以使用以下方式找到最小的时间:
minimum = min(ListOfElements, key=lambda x: x[2])
index = ListOfElements.index(minimum)
一些一般性说明:
map
,apply
等。)答案 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"
然后你可以用你的方法找到最小值的位置。