gpt4 book ai didi

python - 从理解中消除理解中的冗余函数调用

转载 作者:太空狗 更新时间:2023-10-30 00:26:37 33 4
gpt4 key购买 nike

假设我们需要一个程序,它接受一个字符串列表并将它们拆分,然后将元组中的前两个单词附加到一个列表并返回该列表;换句话说,一个程序会为您提供每个字符串的前两个单词。

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

最佳答案

好吧,在这种特殊情况下:

def firstTwoWords(strings):
return [s.split()[:2] for s in strings]

否则,您可以使用一个生成器表达式:

def firstTwoWords(strings):
return [(s[0], s[1]) for s in (s.split() for s in strings)]

如果性能真的很关键,那就使用一个函数。

关于python - 从理解中消除理解中的冗余函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17560953/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com