Python:对列表进行排序

kam*_*ame 0 python sorting list

我想对数组 c 进行排序。但我没有得到答案 a、b、c、d。相反,我得到了 a、b、d、c。我能做什么,对整个数组进行排序,而不仅仅是一行?

编辑:我想对数字进行排序。并且连接的字母应该与排序的数字具有相同的顺序。对不起,我的问题不清楚。也许我应该先加入数字和字母。像这样:[['a',1]['b',2]....

a = ['a','b','d','c']
b = [1,2,4,3]
c = [[],[]]
c[0]=a
c[1]=b
c[1].sort()
print(c)
Run Code Online (Sandbox Code Playgroud)

dan*_*ben 5

让我们来看看这里发生了什么:

# Initialize the lists
a = ['a','b','d','c']
b = [1,2,4,3]
c = [[],[]]

# Assign the lists to positions in c
c[0]=a
c[1]=b

# Sort b, which was assigned to c[1]
c[1].sort()
print(c)
Run Code Online (Sandbox Code Playgroud)

所以,当然你不能指望a得到排序。试试这个:

# Sort a, which was assigned to c[0]
c[0].sort()

# Sort b, which was assigned to c[1]
c[1].sort()
print(c)
Run Code Online (Sandbox Code Playgroud)

或者如果c是可变长度:

# Sort every list in c
for l in c:
    l.sort()
Run Code Online (Sandbox Code Playgroud)

编辑:为了回应您的评论,这些字母与数字没有任何联系。如果您希望将它们连接起来,则需要将它们连接到一个类似于元组的结构中。尝试:

>>> c = [ (1, 'a'), (2, 'b'), (4, 'd'), (3, 'c') ]
>>> c.sort()
>>> print c 
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
Run Code Online (Sandbox Code Playgroud)

默认情况下,元组将按它们的第一个元素排序。请注意,您可以在此处使用任何字母代替 a、b、c、d,并且元组仍会按相同的方式排序(按数字)。