`' '.join(e)`没有改变e的值

0 投票
4 回答
504 浏览
提问于 2025-04-16 15:36

我正在创建一个函数,用来生成所有26个字母加上固定后缀的组合。这个脚本基本上是可以工作的,但倒数第二行的JOIN部分有点问题。

def create_word(suffix):
    e=[]
    letters="abcefghijklmnopqrstuvwxyz"
    t=list(letters)
    for i in t:
        e.append(i)
        e.append(suffix)
    ' '.join(e)
    print e

现在,它打印出来的是 ['a', 'suffix', 'b', 'suffix', ...等等]。我希望它能打印成一个长长的字符串:'aSuffixbSuffixcSuffix...等等.' 为什么JOIN在这里不管用呢?我该怎么修复这个问题?

另外,当我得到这个字符串后,怎么把字符分开呢?比如说,想把“后缀的最后一个字符拿出来,每次加一个空格('aSuffixbSuffixcSuffix' --> 'aSuffix bSuffix cSuffix')”。或者更一般一点,怎么替换第x个字符,其中x是任意整数(比如说,替换第3个、第6个、第9个字符,等等,用我选择的东西替换)。

4 个回答

0

join这个方法不会改变它的参数,它只是返回一个新的字符串:

result = ' '.join(e)
return result
0

如果你真的想要你指定的输出(把所有结果连在一起):

>>> import string
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> letters = string.ascii_lowercase
>>> suffix = 'Suffix'
>>> ''.join('%s%s' % (l, suffix) for l in letters)
'aSuffixbSuffixcSuffixdSuffixeSuffixfSuffixgSuffixhSuffixiSuffixjSuffixkSuffixlSuffixmSuffixnSuffixoSuffixpSuffixqSuffixrSuffixsSuffixtSuffixuSuffixvSuffixwSuffixxSuffixySuffixzSuffix'
2

str.join 方法会返回一个新的值,而不会改变原来的字符串。这里有一种方法可以做到这一点。

result = ' '.join(e)
print result

不过,如果你觉得自己很聪明,可以简化很多设置的步骤。

import string
def create_word(suffix):
   return ' '.join(i + suffix for i in string.ascii_lowercase)

撰写回答