自动将数据拆分为列表元素和订单列表元素,然后发送给函数

时间:2019-02-27 22:54:32

标签: python python-3.x list if-statement

我最近创建了一个GUI,其中包含表。用户可以在单元格中插入值。如下图所示。

enter image description here

我想使用值根据用户给出的值进行一些计算。可以根据用户选择添加和删除行。换句话说,我从用户那里获得的数据可能仅来自一行或几行。

我设法自动从表中获取所有值,并将它们分配给python列表。每行列出了5个元素。

我已经实现了。 python列表中的数据必须进行处理和组织。这正是我想要的帮助。因为我一直在思考一些问题,而且我不知道该如何继续...

Python数据作为表中的列表。例如。

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, '', 11, 12, 13, 14] 

我想实现的目标!

我想将列表分成3次len(data)

我也做到了。

def split_seq(seq, num_pieces):
    start = 0
    for i in range(num_pieces):
        stop = start + len(seq[i::num_pieces])
        yield seq[start:stop]
        start = stop

for data in split_seq(data, int(len(data)/5)):
    print(data)

输出为:

[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]
['', 11, 12, 13, 14]

困难部分从这里开始。

我想获取每个分割的列表,并将它们放入if条件,并将值存储为变量,并将这些值发送给外部函数。

如下所示:

for i in range(len(splitted_list1)):
    if splitted_list1[0] == '':
       do nothing
    else:
       x_+str(i)= splitted_list1[i]
       externalfunc(x_1,x_2,x_3,x_4,x_5)

for i in range(len(splitted_list2)):
    if splitted_list2[0] == '':
       do nothing
    else:
       x_+str(i)= splitted_list2[i]
       externalfunc(x_1,x_2,x_3,x_4,x_5)

continues depending on number of splitted_lists

..............

感谢您的帮助,欢迎您提出另一个解决方案。

1 个答案:

答案 0 :(得分:0)

使用一个列表并将其传递给override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState)//this missing }

externalfunc将最终被解释为x_+str(i)= ...或任何数字。该函数将接受可能未知数量的变量。您可以将每个“变量”分组为一个列表,然后根据数字对它们进行索引。你已经有。每个人都在x_"0"= ...splitted_list0等处。

但是,您不需要异步返回不同的列表。相反,您可以拆分列表并将它们放在一个更大的列表中。这是一个二维数组。似乎很吓人,但这只是另一个列表中的一些列表。

现在要将每个数字传递给splitted_list1,您可以使用每个拆分列表并将其作为参数传递。基本上产生externalfunc,依此类推。

最终的代码如下所示:

externalfunc(splitted_list0)

请注意,代码第一行中的# Split the data into seperate lists: split_lists = [data[i*(len(data)/3):(i+1)*(len(data)/3)] for i in range(3)] # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, '', 11, 12, 13, 14] becomes # [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], ['', 11, 12, 13, 14]] # Pass each list to the external function: for i in range(split_lists): externalfunc(split_lists[i]) # split_lists[i] will be [1, 2, 3, 4, 5] or [6, 7, 8, 9, 10], etc. 可以更改为小于列表3长度的任何数字。这只是将数据分割成的列表数。记住,如果每3个都经过硬编码,则要更改一次,或者只是添加一个变量。最后,函数data将具有5个数字的列表,作为该函数的第一个也是唯一的参数。

externalfunc