Python首先使用last元素进行更改

时间:2015-04-11 20:14:09

标签: python-3.x

我想用最后一个元素更改字符串的第一个元素。

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

4 个答案:

答案 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"))

DEMO

正如您所看到的,输出与输入“相同”(除了展开到列表中),因为您遍历字符串中的每个索引,将所有索引反转两次(将它们放回原始位置)

答案 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了解详情。