автоматически разбивать данные в элементах списка и списка заказов и отправлять в функцию - PullRequest
0 голосов
/ 28 февраля 2019

Я недавно создал графический интерфейс, который содержит таблицы.Пользователь может вставлять значения в ячейки.Как показано на рисунке ниже.

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 голосов
/ 28 февраля 2019

Используйте один единственный список и передайте его 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 в первой строке кода можно изменитьбыть любым числом, меньшим длины списка data.Это просто количество списков, на которые нужно разбить данные.Не забывайте менять каждые 3, если они жестко заданы, или просто добавьте переменную.Наконец, функция externalfunc будет иметь список из 5 чисел в качестве первого и единственного аргумента функции.

def externalfunc(nums):
  for n in nums:
    # n = each number in the list
    # do something with n, write it somewhere, store it, print it.
    print(n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...