Python 根据第二个整数对列表进行排序

Python 根据第二个整数对列表进行排序,python,list,sorting,Python,List,Sorting,我正试图根据第二项对列表进行排序。我已经写出了这段代码,但它没有正确地对它们进行排序 import random d2 = [] for i in range (12): x = random.randint(1,100) y = x x = random.randint(1,100) d2.append([x,y]) 我在这一部分遇到了问题,我需要让它解决。它对前两个列表进行排序,但随后停止工作。我的代码怎么了 def sortlist(A): l

我正试图根据第二项对列表进行排序。我已经写出了这段代码,但它没有正确地对它们进行排序

import random

d2 = []
for i in range (12):
    x = random.randint(1,100)
    y = x
    x = random.randint(1,100)
    d2.append([x,y])
我在这一部分遇到了问题,我需要让它解决。它对前两个列表进行排序,但随后停止工作。我的代码怎么了

def sortlist(A):
    l = len(A)
    for i in range(0, l):
        for j in range(0, l-i-1):
            if (A[j][1] > A[j + 1][1]):
                tempo = A[j]
                A[j]= A[j + 1]
                A[j + 1]= tempo
                return A

A = d2
print(sortlist(A))
您可以使用Python的sorted,并将自定义键函数设置为根据列表元素的排序方式进行指定

# sort the list based on each element's second integer (elem[1])
sorted(d2, key=lambda elem: elem[1])
您可以使用Python的sorted,并将自定义键函数设置为根据列表元素的排序方式进行指定

# sort the list based on each element's second integer (elem[1])
sorted(d2, key=lambda elem: elem[1])
您可以输入sort键参数或按该键排序。在本例中,您需要的键是itemgetter1,例如:

import operator

data = [('a', 5), ('b', 4), ('c', 7), ('d', 6)]
data.sort(key=operator.itemgetter(1))

# data is now [('b', 4), ('a', 5), ('d', 6), ('c', 7)]
顺便说一句,operator.itemgetter1执行与lambda x:x[1]相同的操作。

您可以使用sort或按该键排序的键参数。在本例中,您需要的键是itemgetter1,例如:

import operator

data = [('a', 5), ('b', 4), ('c', 7), ('d', 6)]
data.sort(key=operator.itemgetter(1))

# data is now [('b', 4), ('a', 5), ('d', 6), ('c', 7)]

顺便说一句,operator.itemgatter1与lambda x:x[1]做的事情是一样的。

这就是你想要的东西吗

list1 = [10, 5, 2, 3]
list2 = list(list1)
del list2[0]
list2.sort()

for i in range(0, len(list2)):
    list1[i+1] = list2[i]

print(list1)

输出:[10,2,3,5]

像这样的东西是你想要的吗

list1 = [10, 5, 2, 3]
list2 = list(list1)
del list2[0]
list2.sort()

for i in range(0, len(list2)):
    list1[i+1] = list2[i]

print(list1)

输出:[10、2、3、5]

您能否创建一个与第一个列表相等的新列表,但删除第一个项目,然后对其排序并将其与第一个现有项目一起附加到列表中?这是否回答了您的问题@库卡OP并没有询问如何对列表排序,但他们已经实现的算法有什么问题。@Countour Integral先生Quadri搞砸了。你的返回a有错误的缩进-它应该与l=lenA在同一个缩进处。我写的答案要长得多,直到问题结束。你也有不必要的任务-看看你自己能不能找到。你能不能只制作一个与第一个相同的新列表,但删除第一个项目,然后排序并将其与第一个现有项目一起附加到列表中?这是否回答了你的问题@库卡OP并没有询问如何对列表排序,但他们已经实现的算法有什么问题。@Countour Integral先生Quadri搞砸了。你的返回a有错误的缩进-它应该与l=lenA在同一个缩进处。我写的答案要长得多,直到问题结束。你也有不必要的任务——看看你自己能不能找到。