我使用的是一个庞大的系统,所以我无法对功能进行任何更改
我的目标是使用某个参数(产生/返回结果)运行x函数,然后使用不同的参数(产生/返回第二个结果)运行x函数。最好比我现在拥有的解决方案要短一些
我尝试使用zip(),但获取元组时没有属性错误。我知道C在迭代时有一个concat函数
def function():
# returns "1 2 3"
for x in pdm.function(param1):
yield {
x.info1
# more info 2 -7
x.info8
}
# returns "a"
for x in pdm.function(param2):
yield {
x.info1
# more info 2 -7
x.info8
}
这将返回我需要的“123A”,但很长,我想学习如何更好地迭代它
我不能执行for x, y in pdm.function(param1):
,因为它们需要有不同的参数
我知道我也可以遵循干,使内部功能。这将使我的行数减少一半,但也会在现有的庞大代码库中添加另一个函数:
def printwords(x):
yield {
x.info1
# more info 2 -7
x.info8
}
理想情况下,如果存在这样的连接,这将是我要寻找的答案:
for x in pdm.function(param1) and x in pdm.function(param2):
yield {
x.info1
# more info 2 -7
x.info8
}
谢谢大家!
我想你在找
itertools.chain
但我想评论一下你使用“慢”作为有意义的比较
除非您也在对代码进行基准测试,或者已经使用大O或大Θ分析计算出代码的复杂性,否则您真的不能说序列中的两个
for
循环是“慢”的,或者说外部循环只运行两次的嵌套for
循环比具有序列for
循环的初始代码“慢”。没有复杂性分析和基准测试,您只是从语言语法推断性能特征。如果你这样做,你会经常感到惊讶。一旦源代码转换成字节码并在python虚拟机上运行,谁知道会进行哪些优化呢更简洁或紧凑的代码并不总是产生更高效的代码
那么:
相关问题 更多 >
编程相关推荐