Существует ли простой способ для пользователя выбрать, какие списки / строки можно гибко комбинировать? - PullRequest
2 голосов
/ 05 апреля 2019

У меня много разных категорий списков. Я пытаюсь найти эффективный способ, позволяющий пользователю вводить данные, чтобы сообщить сценарию, какие списки использовать для действия.

Например, у меня есть 20 различных списков, и пользователь хочет использовать 3 из них для объединения в один временный список, каков наилучший способ кодирования этого?

Я довольно новичок в python, поэтому мой первый инстинкт - просто использовать миллион операторов if, но я сомневаюсь, что это самый эффективный способ сделать что-то.

Ожидаемый результат:

list1
list2
list3
list4
list5

пользователь как-то говорит "дай мне списки 2, 4 и 5.

и создается список пользователей, который List0 = list2 + list4 + list5

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Если бы я разбил эту проблему на несколько задач программирования (Разделяй и властвуй), я бы беспокоился о вводе пользователем в качестве первого и объединении списков в качестве второго.

Самый простой способ указать списки для пользователя - использовать метод input (). Пример ниже:

user_input = input("Please enter the list indexes")
list_indexes = user_input.split(',')

Используя этот код выше, пример некоторого пользовательского ввода и результат можно найти ниже:

Ввод пользователя: '1, 4, 5'

list_indexes = ['1', '4', '5']

Теперь, когда мы обработали пользовательский ввод, мы можем использовать его для объединения списков.

Нам необходимо иметь доступ к каждой из категорий по одной и той же ссылке (Если вы хотите знать почему, пожалуйста, дайте мне знать, и я объясню). Один из способов сделать это состоит в том, чтобы поместить все ваши списки категорий в большой список под названием «категории»

categories = [list1, list2, list3,...,list(n)]

Затем мы можем выполнить итерации по категориям и извлечь нужные нам данные.

concatenated_list = []
for index, category in enumerate(categories):
    if (index in (int(i) for i in list_indexes):
        concatenated_list.extend(category)
0 голосов
/ 05 апреля 2019

Поместите все списки в словарь.

all_lists = {"list1": list1, "list2": list2, ...}

Затем пользователь выбирает 3 списка:

name1 = input("First list name:")
name2 = input("Second list name:")
name3 = input("Third list name:")
list0 = all_lists[name1] + all_lists[name2] + all_lists[name3]
...