我有一个功能,需要一个参数' i'并返回' a'。
'一个'列表中包含list.append(a)和' i'改变值(我在for循环中)。
我后来想要将列表从大到小排序,并且能够打印出这个排序列表,并且每个' a'印刷,我想要相应的' i'以及。
我考虑过把'我'在列表中以及"复制" ' a' -list的排序顺序。但不知道这是一个好方法,还是甚至可以做到。
如何对包含' a'的值的列表进行排序?并保持每个' a'连接到它的独特' i'所以,如果我想找到' i'给了第三大' a'我可以这样做。 编辑:代码看起来像这样(种类)
for i in range(1, 100):
a = function(i)
list.append(a)
list.sort #highest value of a first
print("Highest value of a was" + list[0] + "given by i:" + <i that produced list[0]>
答案 0 :(得分:1)
您可以创建一个类来放置列表项并将键传递给sort函数,以便它知道如何对列表进行排序:
class ListItem():
def __init__(self, value, index):
self.value = value
self.index = index
item1 = ListItem('test1', 1)
item2 = ListItem('test2', 2)
item3 = ListItem('test3', 3)
unsortedList = [item2, item3, item1]
unsortedList.sort(key = lambda item: item.index)
for item in unsortedList:
print('index: ' + str(item.value) + ', value: ' + str(item.index))
输出:
Python 3.6.1 (default, Dec 2015, 13:05:11) [GCC 4.8.2] on linux index: test1, value: 1 index: test2, value: 2 index: test3, value: 3
答案 1 :(得分:1)
您可以使用列表理解来保持结果和输入在元组中相关联。
# Apply the function to desired number range using a list comprehension
results = [(function(i), i) for i in range(1, 100)]
# Sort by the first element of each tuple, from largest to smallest
results = sorted(results, key=lambda t: t[0], reverse=True)
# Use a string formatting operation to display result
print("Highest value of a was {0} given by i: {1}".format(results[0][0], results[0][1]))