连接列表中的2个元素

时间:2017-10-14 19:00:57

标签: python sorting

我有一个功能,需要一个参数' 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]>

2 个答案:

答案 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]))