假设我们需要一个程序,它接受一个字符串列表并将它们拆分,并将前两个单词以元组的形式附加到一个列表并返回该列表;换句话说,一个程序可以为您提供每个字符串的前两个单词。
input: ["hello world how are you", "foo bar baz"]
output: [("hello", "world"), ("foo", "bar")]
可以这样写(我们假设输入有效):
def firstTwoWords(strings):
result = []
for s in strings:
splt = s.split()
result.append((splt[0], splt[1]))
return result
但是列表理解会更好。
def firstTwoWords(strings):
return [(s.split()[0], s.split()[1]) for s in strings]
但这涉及到两次调用split()
. 有没有办法在理解范围内只执行一次拆分?我尝试了自然而然的方法,但语法无效:
>>> [(splt[0],splt[1]) for s in strings with s.split() as splt]
File "<stdin>", line 1
[(splt[0],splt[1]) for s in strings with s.split() as splt]
^
SyntaxError: invalid syntax