Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将2个列表中的元素迭代应用到新函数中?_Python_List_Iteration_User Defined Functions - Fatal编程技术网

Python 如何将2个列表中的元素迭代应用到新函数中?

Python 如何将2个列表中的元素迭代应用到新函数中?,python,list,iteration,user-defined-functions,Python,List,Iteration,User Defined Functions,假设我有两个列表,第一个列表的第I个元素对应于第二个列表的第I个元素。如何将两个列表中的元素迭代应用到不同的函数中 def GetLists(n): List1 = [] List2 = [] n = int(input("how many terms: ")) for i in range(1,n): val1 = float(input("what is val1: ")) val2 = float(input("what is

假设我有两个列表,第一个列表的第I个元素对应于第二个列表的第I个元素。如何将两个列表中的元素迭代应用到不同的函数中

def GetLists(n):
    List1 = []
    List2 = []
    n = int(input("how many terms: "))
    for i in range(1,n):
        val1 = float(input("what is val1: "))
        val2 = float(input("what is the corresponding val2: "))
        List1.append(val1)
        List2.append(val2)
    return List1, List2

def newfunc(ListA, ListB, var):
    # take i-th elements from lists A and B where (a,b) are the i-th elements of A and B
    # want output = sum(a * var ** b) for index in len(A) if len(A) == len(B)
做这件事最像蟒蛇的方式是什么?如果可能的话,我希望在不导入外部模块的情况下这样做

编辑:我检查了其他解决方案。“重复”回答需要导入模块;我试着不带它。另外,我正在尝试执行一个返回输出值而不是打印值的操作,这使得zip的使用复杂化,超出了重复答案中显示的级别

从列表A和B中选取第i个元素,其中(A,B)是A和B的第i个元素

如果len(a)=len(b),则len(a)中索引的想要输出=和(a*var**b)


这就是你要找的吗?它将把两个长度相同的列表压缩在一起,计算某个常量的
var
f(a,b,i)=a[i]*var**b[i]
,并计算每个
i
,其中
0是在zip中查找a,b的
(列表a,列表b):
?另外,请注意,您发布的内容与Python无关—大小写很重要。@jornsharpe哪部分不是Python(哪部分依赖于大小写)?请原谅我的无知,我还是个初学者。
Def
->
Def
For
->
For
。如果您是新手,请阅读教程。这是一个重复的,
zip
不需要导入,只要有
a
b
就可以做任何你想做的事情。啊,我粗心的错误。我在用手机打字。我现在就编辑它。至于它的副本,“原件”需要导入itertools。它也会打印,不会对压缩的元素进行操作。这是一个不同于我所寻找的公式,但我应该能够将相同的原理应用到我的公式中。非常感谢。编辑:公式已更正,效果很好。@mikey有点困,误读了公式。我编辑的帖子中的公式正确吗?是的,它是正确的。我能问一下否决票是为了什么吗?我对你的答案投了赞成票,因为代码是有效的。一定是另外一个人。
def process(list_a, list_b, var):
    if len(list_a) != len(list_b):
        raise ValueError('Lists are not equal in length')

    def combine():
        for a, b in zip(list_a, list_b):
            yield a * var ** b

    return sum(combine())

print(process([5, 2, 3], [2, 2, 3], 10))
3300
def process(list_a, list_b, var):
    if len(list_a) != len(list_b):
        raise ValueError('Lists are not equal in length')
    
    return sum(a * var ** b for a, b in zip(list_a, list_b))

print(process([1, 2, 3], [2, 2, 3], 10))