剥离lis中的字符串

2024-10-03 06:28:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着从字符串列表中的每个字符串的末尾去掉字符。你知道吗

我不明白的是这怎么不起作用:

def test():
    listymclist = ['bla bla bla\n', 'stuff\n', '80085\n']

    for entry in listymclist:
        entry.strip('\n')

    return listymclist

最终结果是listymclist不变:['bla bla bla\n', 'stuff\n', '80085\n']

但如果我这样做:

def test():
    listymclist = ['bla bla bla\n', 'stuff\n', '80085\n']

    listymclist = [x.strip('\n') for x in listymclist]

    return listymclist

我以所需的剥离形式返回列表:['bla bla bla', 'stuff', '80085']

在第一个例子中,似乎我的for循环被完全忽略了,就好像列表的更改没有被修改为listymclist一样。为什么这个额外的步骤listmclist = ... 是必要的,因为它是一个列表,而不是像元组那样的不可变的东西?你知道吗


Tags: 字符串intest列表forreturndef字符
3条回答

^{}方法不更改原始字符串,而是返回字符串的副本。您可以将返回的值放入另一个列表中,然后返回该列表

def test():
    listymclist = ['bla bla bla\n', 'stuff\n', '80085\n']
    stripped_list = []
    for entry in listymclist:
        stripped_list.append(entry.strip('\n'))

    return stripped_list 

您的第一个循环没有改变listmyclist中的条目。您的操作会剥离\n,但不会将值写回列表。你知道吗

这是因为函数str.strip公司()返回列表中字符串的副本,该字符串不会附加到列表“listymclist”中。它返回一个副本,因为字符串是不可变的。你知道吗

相关问题 更多 >