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

时间:2016-03-04 16:00:34

标签: python arguments newline

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

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

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

2 个答案:

答案 0 :(得分:0)

首先需要拆分包含\ 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])

答案 1 :(得分:0)

您应该将数据拆分为多行,然后可以使用.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

for循环&amp;可以使用*“splat”运算符简化函数调用:

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