Python 如何在不使用sort()或lambda()函数的情况下对元组列表进行排序?
我必须在不使用任何内置函数(如sort()或lambda())的情况下对元组列表进行排序 我知道如何对普通列表进行排序,如下所示:Python 如何在不使用sort()或lambda()函数的情况下对元组列表进行排序?,python,sorting,Python,Sorting,我必须在不使用任何内置函数(如sort()或lambda())的情况下对元组列表进行排序 我知道如何对普通列表进行排序,如下所示: a=[2,1,3] for i in range(0, len(a)): for j in range(i+1,len(a)): if (a[i]>a[j]): a[i],a[j]=a[j],a[i] return a 我的输出是:[1,2,3] 然而,当涉及到对元组列表进行
a=[2,1,3]
for i in range(0, len(a)):
for j in range(i+1,len(a)):
if (a[i]>a[j]):
a[i],a[j]=a[j],a[i]
return a
我的输出是:[1,2,3]
然而,当涉及到对元组列表进行排序时,比如
((“b”,32),(“c”,1),(“a”,23))
,我必须按照第二个元素的顺序对其重新排序,而不使用sort()或lambda()或任何内置函数,我不知道如何进行排序。谁能帮帮我吗?:)没什么区别。您可以使用相同的代码进行细微更改:
`
`算法是一样的,只需比较每个元素的第二项
if a[i][1] > a[j][1]:
另外,((“b”,32),(“c”,1),(“a”,23))
是一个元组,所以它是不可变的,使用列表作为外部容器
def sort_tuples():
a = [("b", 32), ("c", 1), ("a", 23)]
for i in range(0, len(a)):
for j in range(i + 1, len(a)):
if a[i][1] > a[j][1]:
a[i], a[j] = a[j], a[i]
return a
您可以使用最简单的排序算法之一,即冒泡排序。 对于元组中的元组,它将按照元组的第一个元素的顺序进行排序。因此,
((32,“b”),(1,“c”),(23,“a”))
现在,如果您对它进行排序,它将按照元组的第一个元素的顺序进行排序
def sort_tuples():
a = [("b", 32), ("c", 1), ("a", 23)]
for i in range(0, len(a)):
for j in range(i + 1, len(a)):
if a[i][1] > a[j][1]:
a[i], a[j] = a[j], a[i]
return a