TypeError:“元组”对象在交换值时不支持项目分配


70

我在python中编写一个简单的排序程序,遇到此错误。我想交换列表元素,但返回错误。我在下面附上错误和相关程序。

list[i+1] = list[i]
TypeError: 'tuple' object does not support item assignment

码:

def my_sort(list):
    for index in range(1,len(list)):
        value=list[index]
        i=index-1
        while i>=0:
            if value<list[i]:
                list[i+1] = list[i]
                list[i]=value
                i=i-1
            else:
                break
    return

    input_list=eval(input("Enter list items"))
    my_sort(input_list)
    print(input_list)

2
不要使用单词列表。您可以将代码正确缩进吗?
— lc2817 2011年

19
请永远不要将变量称为“列表”。“列表”是内置类型。现在,您无法使用将其从元组转换为列表list(thing)。
— 克里斯·摩根

2
您为什么要在世界上使用评估?一个更简单的解决方案是先分割,再去除多余的空间。

Answers:


84

计算“ 1,2,3”的结果(1, 2, 3)为tuple。正如您所发现的,元组是不可变的。处理前转换为列表。


3
我是python的新手。您能帮我如何将元组转换为list吗?还是更好,如何让用户直接输入列表?
— 约翰·康纳

12
要直接输入列表,请用方括号“ [1,2,3]”将序列括起来。要转换为列表,请将其传递给列表构造函数:L = list(S)。
— 伊格纳西奥·巴斯克斯

答案中最后缺少的部分是在处理列表后将其转换为S = tuple(L)
— WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.