我想用最后一个元素更改字符串的第一个元素。
def change(string):
for i in range(16):
helper = string[i]
string[i]=string[15-i]
string[15-i]=helper
return string
print (change("abcdefghijklmnop"))
错误输出:
string[i]=helper2[0]
TypeError: 'str' object does not support item assignment
答案 0 :(得分:1)
你不能改变一个字符串;他们是不可改变的。您可以创建一个根据需要更改的新字符串:
def change(string):
return string[-1]+string[1:-1]+string[0]
答案 1 :(得分:0)
正如您所发现的,字符串是不可变的,因此您可以索引字符串(例如string[x]
),但不能分配给索引(例如string[x] = 'z'
)。
如果要交换第一个和最后一个元素,则需要创建一个新字符串。例如:
def change(input_str):
return input_str[-1] + input_str[1:-1] + input_str[0]
但是,根据您的示例代码,您似乎尝试交换字符串的所有“元素”。如果您想这样做,请参阅前面关于反转字符串的不同方法的讨论:Reverse a string in Python
此外,即使你可以“索引”一个字符串,你的代码也不会像写的那样工作。稍作修改即可将其“爆炸”成一个列表:
def change(string):
string = [c for c in string]
for i in range(16):
helper = string[i]
string[i]=string[15-i]
string[15-i]=helper
return string
print (change("abcdefghijklmnop"))
正如您所看到的,输出与输入“相同”(除了展开到列表中),因为您遍历字符串中的每个索引,将所有索引反转两次(将它们放回原始位置)
答案 2 :(得分:0)
在询问之前尝试搜索。这是答案:Reverse a string in Python
python字符串是不可变的。你必须用旧的字符串构造新的字符串。
答案 3 :(得分:0)
您可以使用“*”运算符。
my_list = [1,2,3,4,5,6,7,8,9]
a, *middle, b = my_list
my_new_list = [b, *middle, a]
my_list
[1, 2, 3, 4, 5, 6, 7, 8, 9]
my_new_list
[9, 2, 3, 4, 5, 6, 7, 8, 1]
阅读here了解详情。