交换 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)