Как создать подсписок внутри списка? - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть вопрос о том, как создать подсписок в python.

Я хочу ввести 3 значения, добавить их в подсписок с помощью функции и вызвать их 3 раза.

Нопо какой-то причине я не могу создать подсписок.

Я хочу, чтобы мой вывод был примерно таким: [['string1', 'string2', 'string3'], [10, 20, 30], [2.7, 5.5, 12.2]]

word = input("add text (end stops): ")
list=[]
while word != 'end':
    a = int(input("add int: "))
    b = float(input("add float: "))
    word = input("add text (end stops): ")

def fixlist(lst, st):
    list=[]
    for item in lst:
        list.append(lst)
        for y in item:
            list.append(st[item])
    return [lst, st]


print(fixlist(list, word))
print(fixlist(list, a))
print(fixlist(list, b))

Это мой вывод :

[[], 'end']
[[], 10]
[[], 5.5]

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018
print("Please provide data!\n-----------------\n")

data = [
    [], [], []
]

while True:
    line = input("Enter: ")
    line = line.split(" ")

    if line[0].lower() == "end":
        print("\nEntering ended.\n")
        break

    data[0].append(line[0])
    data[1].append(int(line[1]))
    data[2].append(float(line[2]))

print(data)
0 голосов
/ 16 декабря 2018

У вас есть пара проблем в вашем коде:

list=[]

Как упоминал Патрик, не используйте ключевые слова в качестве имен переменных.

while word != 'end':
    a = int(input("add int: "))
    b = float(input("add float: "))
    word = input("add text (end stops): ")

Когда вы выполняете этот код, выпродолжайте получать новый ввод, но вы выбрасываете свой старый ввод.Вам нужно сохранить ваш старый ввод, если вы хотите использовать его позже.например:

word = input("add text (end stops): ")
all_string_inputs = []
while word != 'end':
    all_string_inputs.append(word)
    word = input("add text (end stops): ")

В приведенном выше коде я сохраняю более старые входные данные в списке all_string_input.
Если вы хотите ввести только 3 значения, не используйте некоторое время.

def fixlist(lst, st):
    list=[]
    for item in lst:
        list.append(lst)
        for y in item:
            list.append(st[item])
    return [lst, st]

Что вы собираетесь здесь делать?в приведенном выше коде вы перебираете элементы в lst, для которых вы вводите пустой список.И в конце вы вернете свой вклад.Не меняя это.Также обратите внимание, что st[item] не определен, так как item не является целым числом int.

Если вы хотите добавить к существующему списку внутри функции, вам нужно использовать следующую схему:

def fixlist(lst, st):
    lst.append(st)

Выше будет изменен существующий список.Если вы хотите создать новый список, вам нужно вернуть новый список:

def fixlist(lst, st):
    new_list = lst+[st]
    return new_list

Выше будет создан новый список с lst и st, и он будет возвращен.

Попытайтесь исправить свой код сейчас, если это все еще не помогло, отредактируйте вопрос своими попытками.

...