我有一个包含数字的列表。 列表有3组数字后跟新行\ n 我想取3个第一组数字并将它们传递给一个函数,然后是下一个组
list = ['4', '23', '21\n20', '29', '30\n23', '11', '5' ........]
function (a,b,c)
#do something with the numbers
答案 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)