交换 python 列表条目时出现问题
Problem when swapping python list entries
我试过这样做:
A = [["test1"],["test2"]]
A[0][0], A[1][0] = A[1][0], A[0][0]
当执行 print(A)
时,输出符合预期:两个条目被交换。
但是使用此代码会引发“类型错误:“str”对象不支持项目分配”(第 8 行):
import sys
try:
with open ("Values", "r") as f:
lines = f.readlines()
for i in range(len(lines)):
for j in range(len(lines[i])//2):
lines[i][j], lines[i][len(lines[i])-1-j] = lines[i][len(lines[i])-1-j], lines[i][j]
except FileNotFoundError:
print("File could not be found.")
您基本上已经回答了您的问题。 “python 字符串不可变”而列表是。
看看你能做到
l = ['a','b','c']
l[0] = x
# ['x','b','c']
虽然你做不到
l = 'abc'
l[0] = x
# TypeError: "str" object does not support item assignment
而您的行 lines[i][j]
试图更改字符串中的一个字符。
而是先尝试将字符串转换为列表。然后交换字符。然后将其转换回字符串:
temp = list(lines[i])
temp[j], temp[len(lines[i])-1-j] = temp[len(lines[i])-1-j], temp[j]
lines[i] = "".join(temp)
我试过这样做:
A = [["test1"],["test2"]]
A[0][0], A[1][0] = A[1][0], A[0][0]
当执行 print(A)
时,输出符合预期:两个条目被交换。
但是使用此代码会引发“类型错误:“str”对象不支持项目分配”(第 8 行):
import sys
try:
with open ("Values", "r") as f:
lines = f.readlines()
for i in range(len(lines)):
for j in range(len(lines[i])//2):
lines[i][j], lines[i][len(lines[i])-1-j] = lines[i][len(lines[i])-1-j], lines[i][j]
except FileNotFoundError:
print("File could not be found.")
您基本上已经回答了您的问题。 “python 字符串不可变”而列表是。
看看你能做到
l = ['a','b','c']
l[0] = x
# ['x','b','c']
虽然你做不到
l = 'abc'
l[0] = x
# TypeError: "str" object does not support item assignment
而您的行 lines[i][j]
试图更改字符串中的一个字符。
而是先尝试将字符串转换为列表。然后交换字符。然后将其转换回字符串:
temp = list(lines[i])
temp[j], temp[len(lines[i])-1-j] = temp[len(lines[i])-1-j], temp[j]
lines[i] = "".join(temp)