【问题标题】:Python: Add an alphabet to a stringPython:将字母添加到字符串
【发布时间】:2017-12-28 22:48:42
【问题描述】:

我正在尝试将所有字母一个一个地添加到字符串中的所有位置,这是代码:

from string import ascii_lowercase
var = 'abc'
for i in ascii_lowercase:
    result = [var[:j] + i + var[j:] for j in range(len(var))]

但这就是我得到的:

['zabc', 'azbc', 'abzc']

这是我所期待的:

['aabc', 'abac', 'abca','babc','abbc','abcb'...]

有谁知道如何解决这个问题。谢谢。

【问题讨论】:

  • 您的预期结果是什么?
  • 你想用这个来完成什么?最明显的错误是您每次都重新分配结果。您也与range(len(var))(应该是range(len(var) + 1))相差一个
  • 这不是代码高尔夫...有什么理由不能让这个代码更易于人类阅读吗?
  • 我删掉了帖子
  • 您在每个循环中都覆盖了result,因此您只会看到ascii_lowercase 中最后一个字符的结果是z

标签: string python-3.x list alphabetical


【解决方案1】:

您可以使用嵌套列表推导一次构建整个列表

from string import ascii_lowercase
var = 'abc'

result = [var[:n]+c+var[n:] for c in ascii_lowercase for n in range(len(var)+1)]

【讨论】:

  • 这会在开头给出重复项,例如 "aabc"
猜你喜欢
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2017-04-11
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多