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)
一些一般注意事项:
- 在 python 中使用下划线而不是 CamelCase 是标准。
- 在 python 中,您几乎不必使用显式 for 循环。反而更喜欢
理解或功能模式(
map
、apply
等)
您可以 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]
那你就可以按照你的方法去找最小值的位置了。
我知道在其他地方也有人问过这个问题,但老实说,我不确定应该使用什么术语来搜索它。 但基本上我有一个包含不同数量元素的列表。每个元素包含 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)
一些一般注意事项:
- 在 python 中使用下划线而不是 CamelCase 是标准。
- 在 python 中,您几乎不必使用显式 for 循环。反而更喜欢
理解或功能模式(
map
、apply
等)
您可以 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]
那你就可以按照你的方法去找最小值的位置了。