我需要使用气泡排序方法对计算机科学课上的项目进行元组中的项目排序。这些项目都是整数。
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)
所以,最后你会得到一个排序的元组。
组是不可变的,因此您可以设置新值或删除项目,但是如果您的老师特别要求元组,那么您可以创建另一个称为排序的元组,或者添加这些新项目并最终用这个元组替换原始元组。