I am writing a simple sort program in python and encounter this error. I want to swap list elements but it returns an error. I am attaching the error and program in question below.
list[i+1] = list[i] TypeError: 'tuple' object does not support item assignment   Code:
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) 
                Tuples are immutable objects. “Immutable” means you cannot change the values inside a tuple. You can only remove them.
Once a tuple is created, you cannot change its values. Tuples are unchangeable, or immutable as it also is called. But there is a workaround. You can convert the tuple into a list, change the list, and convert the list back into a tuple.
The Python "TypeError: 'type' object does not support item assignment" occurs when we assign a data type to a variable and use square brackets to change an index or a key. To solve the error, set the variable to a mutable container object, e.g. my_list = [] .
The underlying problem, is that changing the value of a tuple is a violation of contract. You should not try doing it. Since you can have any object in a tuple, there are loopholes you can exploit, but then you get the kind of weird behaviour you are observing. Tuple items should be frozenset instead of set .
Evaluating "1,2,3" results in (1, 2, 3), a tuple. As you've discovered, tuples are immutable. Convert to a list before processing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With