如何在 Python 中将元组中一个项目的值分配给另一个项目



我需要使用气泡排序方法对计算机科学课上的项目进行元组中的项目排序。这些项目都是整数。

   SwapAgain = True
    
    while SwapAgain == True:
        SwapAgain = False
        for item in xrange(len(mytuple)):
            if mytuple[item] > mytuple[item + 1]:
                SwapAgain = True
                temp = mytuple[item]
                mytuple[item] = mytuple[item + 1]
                mytuple[item + 1] = temp
                
    return mytuple

我正在尝试将元组中一个项目的值分配给另一个项目,但是当我尝试上面的代码时,我收到此错误:

mytuple[item] = mytuple[item + 1]

类型错误:"元组"对象不支持项分配

我本来更喜欢使用列表,但我的老师只为我们提供了一个特定的元组。我真的很感激我能得到的任何帮助。谢谢!

元组是不可变的数据类型。创建后,无法更改它。因此,使用列表执行此操作是有意义的,并且您可以选择在排序完成后返回元组,例如:

SwapAgain = True
myList = list(myTuple)
while SwapAgain == True:
    SwapAgain = False
    for i in xrange(len(myList)):
        if myList[i] > myList[i + 1]:
            SwapAgain = True
            temp = myList[i]
            myList[i] = myList[i + 1]
            myList[i + 1] = temp
return myList # or return tuple(myList) if you want

元组在Python中是固定结构,因为编译器告诉你"元组"对象不支持项目分配。 您应该将其复制到新的列表中

由于您的条件是您必须根据老师使用元组,因此最好的解决方案是将元组更改为列表

temp_list = list(myTuple)

对列表执行冒泡排序,然后再次将排序列表更改为元组

final_tuple = tuple(temp_list)

所以,最后你会得到一个排序的元组。

组是不可变的,因此您可以设置新值或删除项目,但是如果您的老师特别要求元组,那么您可以创建另一个称为排序的元组,或者添加这些新项目并最终用这个元组替换原始元组。

最新更新