简体   繁体   English

如何在列表压缩中存储来自调用 function 的多个返回变量中的一个变量?

[英]How to store one variable from multiple return variable from call function in List compression?

I want outputs like output from following code function:我想从以下代码 function 中输出output类的输出:

def addMulDiv(i, k):
    add=k+i
    mul=k*i
    div=k//2
    return add, mul, div

Lst = []
for i in range(1, 10):
    add, _, _ = addMulDiv(i, 500)
    Lst.append(add)
    
print(Lst)

output: [501, 502, 503, 504, 505, 506, 507, 508, 509] output:[501、502、503、504、505、506、507、508、509]

But I am trying with following code in List compression but I failed.但我正在尝试使用列表压缩中的以下code ,但我失败了。

Lst = [add for i in range(1, 10) add, _, _ = addMulDiv(i, 500)]

How can I do this easily?我怎样才能轻松做到这一点?

Thanks.谢谢。

Your function addMulDiv() returns a tuple, so you can just use您的 function addMulDiv()返回一个元组,因此您可以使用

Lst = [addMulDiv(i, 500)[0] for i in range(1, 10)]

Your function is actually returning a tuple.您的 function 实际上是返回一个元组。 Hence, you can fetch the first element using [0]因此,您可以使用[0]获取第一个元素

Lst1 = [addMulDiv(i,500)[0] for i in range(1,10)]

You don't fully understood how List compressions works.您不完全了解列表压缩的工作原理。 For instance,例如,

[i ** 2 for i in range(10) if i % 2 == 0]

This means that you get only even numbers from range and raise it to the power of 2.这意味着您只能从范围中获得偶数并将其提高到 2 的幂。

output : [4, 16, 36, 64]

Solution for your problem:解决您的问题:

def addMulDiv(i, k):
    add = k + i
    mul = k * i
    div = k // 2
    return add, mul, div


Lst = [addMulDiv(i, 500)[0] for i in range(1, 10)]
print(Lst)

This means that you get only add result from you function return, because add result has 0 index in returned tuple这意味着您只能从 function 返回中获得添加结果,因为添加结果在返回的元组中具有 0 索引

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM