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中的一个函数,用于迭代要在表达式中使用的并发列表_Python_List_Iteration - Fatal编程技术网

Python中的一个函数,用于迭代要在表达式中使用的并发列表

Python中的一个函数,用于迭代要在表达式中使用的并发列表,python,list,iteration,Python,List,Iteration,我有四个单独的整数列表,需要在等式中同时使用: h = [160, 193, 162, 17, 0] d = [32, 1, 34, 35, 4] t = [1, 2, 3, 4, 5] r = [2, 5, 1, 3, 4] s = h - (d + t + r) 我试图创建一个函数,我可以将每个单独的列表作为参数传递给它,以便在函数中使用。我希望能够获取每个列表上每个连续索引的值,然后在等式中的正确位置使用它们。然后,我将在每个索引处取s的值,并填充一个新列表 例如,索引[0]处的方程式

我有四个单独的整数列表,需要在等式中同时使用:

h = [160, 193, 162, 17, 0]
d = [32, 1, 34, 35, 4]
t = [1, 2, 3, 4, 5]
r = [2, 5, 1, 3, 4]

s = h - (d + t + r)
我试图创建一个函数,我可以将每个单独的列表作为参数传递给它,以便在函数中使用。我希望能够获取每个列表上每个连续索引的值,然后在等式中的正确位置使用它们。然后,我将在每个索引处取s的值,并填充一个新列表

例如,索引[0]处的方程式应为:

s = 160 - (32 + 1 + 2)
如何从列表中获取每个整数值?我尝试过使用枚举函数,也读过*函数,但我不确定我是否应该解包列表-我是否应该用for循环遍历它们

def getSingles(h, d, r, t)
    singles = []
    for n, val in enumerate(h):
        hit = val
    for n, val in enumerate(d):
        double = val
    for n, val in enumerate(t):
        triple = val
    for n, val in enumerate(r):
        run = val
我在这里基本上很差劲——这可能吗?谢谢大家!

你可以把它们放在一起。像这样的方法应该会奏效:

>>> H = [160, 193, 162, 17, 0]
>>> D = [32, 1, 34, 35, 4]
>>> T = [1, 2, 3, 4, 5]
>>> R = [2, 5, 1, 3, 4]
>>> 
>>> for h, d, t, r in zip(H, D, T, R):
...     s = h - (d + t + r)
...     print(s)
... 
125
185
124
-25
-13

请注意,如果您使用的是Python 2.x,并且使用的是非常大的列表,则可能需要使用。

您可以使用
zip
函数和
map
中的lambda:

>>> map(lambda x: x[0] - (x[1] + x[2] + x[3]),zip(h,d,t,r))
[125, 185, 124, -25, -13]
A使这变得容易:

>>> import pandas as pd
>>> h = pd.Series([160, 193, 162, 17, 0])
>>> d = pd.Series([32, 1, 34, 35, 4])
>>> t = pd.Series([1, 2, 3, 4, 5])
>>> r = pd.Series([2, 5, 1, 3, 4])
>>> s = h - (d + t + r)
>>> s
0    125
1    185
2    124
3    -25
4    -13
dtype: int64

如果CSV文件中有h、d、t、r数据,则可以使用
pandas.read\u CSV()
将其读取到pandas数据帧中。数据帧就像一个系列数组,可以以类似的方式计算新的列。

@simonzack你是来troll的吗?现在是2014年,python 3已经发布了足够长的时间了。@simonzack除了世界上大多数人仍在使用2.xBut FWIW外,我更新了2.x和3.x的答案。我不是在指导他们。我假设他们使用的是2.x,通常情况就是这样。我实际上使用的是Python3.x,但我很高兴知道这两个版本都适用。