从 Python3 获取“'str' 对象不支持项目分配”错误
Getting " 'str' object does not support item assignment" Error from Python3
我在 Python 中尝试使用文本文件作为我的快速排序函数的输入。事实证明,我得到了这个错误
TypeError: 'str' object does not support item assignment
我知道发生错误是因为 Python 中的字符串是不可变的,因此无法更改。但是,我不确定如何修复我的代码以使其成为 运行.
我的代码(在Python 3)
import sys
f = open('C:/Users/.../.../Desktop/Test/test1.txt')
array = str(f.read())
def QuickSort(array, starting= 0, ending=len(array)-1):
if starting < ending:
p = Partition(array, starting, ending)
QuickSort(array, starting, p-1)
Quicksort(array, p+1, ending)
def Partition(array, starting, ending):
Pivo_Index = starting
Pivot = array[Pivot_Index]
while starting < ending:
while starting < len(array) and array[starting] <= Pivot:
starting += 1
while array[ending] > Pivot:
ending -= 1
if starting < ending:
array[starting], array[ending] = array[ending], array[starting]
array[ending], array[Pivot_Index] = array[Pivot_Index], array[ending]
return ending
print(QuickSort(array))
我的文本文件如下
12.11.1990 a
01.01.1991 aa
02.02.1992 baa
02.02.1992 aaa
15.07.1999 ytyvm
关于如何修复我的代码的建议?
read()
returns 一个字符串,它是不可变的(因此,如您所见,无法排序)。如果要获取文件中的行列表并对它们进行排序,可以使用 array = f.readlines()
.
我在 Python 中尝试使用文本文件作为我的快速排序函数的输入。事实证明,我得到了这个错误
TypeError: 'str' object does not support item assignment
我知道发生错误是因为 Python 中的字符串是不可变的,因此无法更改。但是,我不确定如何修复我的代码以使其成为 运行.
我的代码(在Python 3)
import sys
f = open('C:/Users/.../.../Desktop/Test/test1.txt')
array = str(f.read())
def QuickSort(array, starting= 0, ending=len(array)-1):
if starting < ending:
p = Partition(array, starting, ending)
QuickSort(array, starting, p-1)
Quicksort(array, p+1, ending)
def Partition(array, starting, ending):
Pivo_Index = starting
Pivot = array[Pivot_Index]
while starting < ending:
while starting < len(array) and array[starting] <= Pivot:
starting += 1
while array[ending] > Pivot:
ending -= 1
if starting < ending:
array[starting], array[ending] = array[ending], array[starting]
array[ending], array[Pivot_Index] = array[Pivot_Index], array[ending]
return ending
print(QuickSort(array))
我的文本文件如下
12.11.1990 a
01.01.1991 aa
02.02.1992 baa
02.02.1992 aaa
15.07.1999 ytyvm
关于如何修复我的代码的建议?
read()
returns 一个字符串,它是不可变的(因此,如您所见,无法排序)。如果要获取文件中的行列表并对它们进行排序,可以使用 array = f.readlines()
.