【问题标题】:Python 3: Add string to OBJECTS within a listPython 3:将字符串添加到列表中的对象
【发布时间】:2020-04-05 07:02:42
【问题描述】:

我确信这是一个非常微不足道的问题,但我似乎在网上找不到任何东西,也许是因为我没有使用正确的术语..

我有一个看起来像这样的列表:

list = ["abc",
        "ded"]

我知道如何将元素附加到此列表,如何将元素添加到开头等。 我需要做的是在此列表中的每个对象之前和之后添加一个字符串(更具体地说是一个星号 (*))。所以它应该看起来像:

list = ["*abc*",
        "*ded*"]

我试过了:

asterisk = '*'
list = [asterisk] + list[0]
list = asterisk + List[0]
list = ['*'] + list[0]
list = * + list[0]

asterisk = list(asterisk)
list = [asterisk] + list[0]

我总是得到:

TypeError:只能将列表(不是“str”)连接到列表

那么在列表中的每个对象之前和之后添加它当然存在问题。

任何帮助将不胜感激。

【问题讨论】:

  • 我认为当你需要做的只是迭代它并对每个项目采取行动时,你对列表的考虑太深了。正如一些答案已经说过的那样,列表理解非常适合。

标签: python-3.x string list indexing


【解决方案1】:

只需将字符串插入如下:

[f'*{s}*' for s in ["abc","ded"]]

输出

['*abc*', '*ded*']

请注意,这仅适用于 Python 3.6+。

【讨论】:

  • 在 Python 3.5 中,['*{}*'.format(s) for s in ["abc","ded"]]
【解决方案2】:

对于您的列表,您可以使用这种优美的语法,称为“列表理解”:

lst = ['abc', 'ded']
lst = ['*'+s+'*' for s in lst]
print(lst)

这会让你:

['*abc*', '*ded*']

【讨论】:

    【解决方案3】:

    您是否尝试过使用列表推导进行调整

    [('*'+i) for i in asterix]
    

    你可以给它起个名字,以便你以后可以调用它

    【讨论】:

    • “在此列表中的每个对象之前和之后添加一个星号 (*)”。而且括号是不必要的
    • 括号只是为了让它更清楚地说明它应该如何工作我知道他们不需要@Pynchia
    【解决方案4】:

    您可以在每个单词中加入星号

    asterisked = [w.join('**') for w in lst]
    

    这里的技巧是记住字符串是可迭代的,所以你可以将一个包含两个星号的字符串传递给单词的 join 方法,让它在单词前面加上第一个星号并附加第二个星号

    【讨论】:

    • 这行得通而且很有趣,但我不会向新手推荐它,因为它的工作原理并不明显,而且不是很灵活
    • 我理解您的担忧,我相信 OP 现在可以选择他/她喜欢/理解的内容。 SO 在这里为 OP 和其他人提供帮助和多种解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多