我想一次将两个项目添加到列表理解中。一项是不变的。如何仅使用列表理解中的一个 for 循环而不使用其他函数来实现这一目标。不使用任何导入的答案将受到青睐。
看看以下内容:
>>> mystring = 'ABCELKJSDLHFWEHSJDHFKHIUEHFSDF'
>>> sum([['^', char] for char in mystring.lower()], [])
['^', 'a', '^', 'b', '^', 'c', '^', 'e', '^', 'l', '^', 'k', '^', 'j', '^', 's', '^', 'd', '^', 'l', '^', 'h', '^', 'f', '^', 'w', '^', 'e', '^', 'h', '^', 's', '^', 'j', '^', 'd', '^', 'h', '^', 'f', '^', 'k', '^', 'h', '^', 'i', '^', 'u', '^', 'e', '^', 'h', '^', 'f', '^', 's', '^', 'd', '^', 'f']
我正在尝试列出一个包含角色的列表^
在每个小写字母之前添加。在此示例中,您需要使用sum
压平列表。然而,我的问题是,是否可以首先制作一个简单的列表。上面的输出是所需的输出。
如,附加一些东西不断地在随着每次迭代而变化的变量之前for
环形。一个不能用两个for
这里循环,因为这太简单了,例如:
mystring = 'ABCELKJSDLHFWEHSJDHFKHIUEHFSDF'
print [item for x in mystring.lower() for item in ['^', x]]
如果有人做了这样的事情:
>>> mystring = 'ABCELKJSDLHFWEHSJDHFKHIUEHFSDF'
>>> [['^', x] for x in mystring]
['^', 'a', '^', 'b', '^', 'c', '^', 'e', '^', 'l', '^', 'k', '^', 'j', '^', 's', '^', 'd', '^', 'l', '^', 'h', '^', 'f', '^', 'w', '^', 'e', '^', 'h', '^', 's', '^', 'j', '^', 'd', '^', 'h', '^', 'f', '^', 'k', '^', 'h', '^', 'i', '^', 'u', '^', 'e', '^', 'h', '^', 'f', '^', 's', '^', 'd', '^', 'f']
您会得到列表中的列表。因此,有没有一种方法可以在列表理解中一次附加两个项目,而不必使用添加 for 循环或附加函数,例如sum
?我问这个,因为它很简单,但我找不到办法做到这一点。如果有人尝试执行以下操作:
>>> ['^', x for x in mystring.lower()]
File "<console>", line 1
['^', x for x in mystring.lower()]
^
SyntaxError: invalid syntax
该尝试给出了SyntaxError
。那么,我所要求的在Python中是不可能做到的吗?使用()
给我一个元组列表。
我也曾tried使用splat
/unpacking
操作员:
>>> [*['^', x] for x in mystring.lower()]
File "<console>", line 1
[*['^', x] for x in mystring.lower()]
^
SyntaxError: invalid syntax
但如上所述,这也是一个语法错误。抱歉这么晚才编辑,但我have尝试了以下方法:
import itertools
mystring = "HELLOWORLD"
print(list(itertools.chain.from_iterable(('^', x) for x in mystring.lower())))
但以上仍然需要导入。