我需要使用计算机科学课程中的项目的冒泡排序方法对元组中的项目进行排序。这些项目都是整数。
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]
TypeError:'tuple'对象不支持项目分配
我宁愿使用列表,但我的老师只为我们提供了一个特定的元组。我真的很感激我能得到的任何帮助。谢谢!
答案 0 :(得分:2)
元组是一种不可变的数据类型。创建后,您无法对其进行更改。因此,使用列表执行此操作是有意义的,并且您可以选择在排序完成时返回元组,例如:
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
答案 1 :(得分:0)
元组是python中的固定结构,因为编译器告诉你''tuple'对象不支持项目赋值。你应该将它复制到一个新的列表
答案 2 :(得分:0)
元组是不可变的,所以你可以设置新的值或删除项目,但如果你的老师已经特别要求元组,那么你可以创建另一个名为sorted的元组或者你添加这些新项目的东西,最后用这个替换原始元组之一。
答案 3 :(得分:0)
由于您的条件是您必须根据您的老师使用元组,最好的解决方案是将元组更改为列表
temp_list = list(myTuple)
在列表上执行冒泡排序,然后再次将排序列表更改为元组
final_tuple = tuple(temp_list)
所以,最后你会得到一个排序的元组。