如何将多个参数从 Python 中的列表逐行传递给函数

How to pass several arguments to a function from a list in Python line by line

我有一个带有数字的列表。 列表有 3 组数字后跟新行 \n 我想取 3 个第一组数字并将它们传递给一个函数,然后是下一组

list = ['4', '23', '21\n20', '29', '30\n23', '11', '5' ........]

function (a,b,c)
     #do something with the numbers 

您首先需要拆分每个包含 \n 的元素:

list2 = [i.split('\n') for i in list]
list2 = [y for x in list2 for y in x]

然后每三个元素调用一次函数:

for i in range(len(list2)):
    if i % 3 == 0:
        function(list2[i], list2[i+1], list2[i+2])

您应该将数据拆分成行,然后您可以使用 .split('x') 拆分每一行。这使得以您想要的形式获取数据变得更加简单。例如,

data = '''4x23x21
20x29x30
23x11x5
'''

def func(a, b, c):
    print('a=', a, 'b=', b, 'c=', c, 'sum=', a + b + c)

for row in data.splitlines():
    a, b, c = [int(u) for u in row.split('x')]
    func(a, b, c)    

输出

a= 4 b= 23 c= 21 sum= 48
a= 20 b= 29 c= 30 sum= 79
a= 23 b= 11 c= 5 sum= 39

可以使用 * "splat" 运算符简化 for 循环和函数调用:

for row in data.splitlines():
    args = [int(u) for u in row.split('x')]
    func(*args)