【问题标题】:How to I assign the value of one item in a tuple to another in Python?如何在 Python 中将元组中一项的值分配给另一项?
【发布时间】:2014-01-08 02:47:17
【问题描述】:

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

   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

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

mytu​​ple[item] = mytuple[item + 1]

TypeError: 'tuple' 对象不支持项目分配

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

【问题讨论】:

  • 您不能将新项目分配给现有元组期间的位置。根据定义,它们是不可变的,没有解决方法。您可以做的是使用值创建一个新元组或使用列表
  • 由于元组是不可变的,您自己的选择是按照您想要的顺序创建一个包含项目的新元组。由于这可能会在排序过程中发生多次,因此在开始时将元组转换为列表一次,然后将最终结果转换回元组比每次交换一对元组时都更有效.

标签: python tuples bubble-sort


【解决方案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

【讨论】:

    【解决方案2】:

    元组是python中的固定结构,因为编译器告诉你'元组'对象不支持项目分配。你应该把它复制到一个新的列表中

    【讨论】:

      【解决方案3】:

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

      temp_list = list(myTuple)
      

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

      final_tuple = tuple(temp_list)
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 2018-08-14
          • 2019-08-20
          • 1970-01-01
          • 1970-01-01
          • 2020-09-25
          • 2016-05-01
          相关资源
          最近更新 更多