如何在列表中创建子列表?

How to create a sublist inside a list?

我对如何在 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]

您的代码中有几个问题:

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 中的项目,您的输入是一个空列表。最后,您 return 您的意见。没有改变它。另请注意,st[item] 未定义,因为 item 不一定是 int。

如果你想追加到函数内的现有列表,你需要使用以下方案:

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

以上将修改现有列表。如果您想创建一个新列表,您需要 return 新列表:

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

以上将创建一个包含 lstst 的新列表,并且 return 是它。

现在尝试修复您的代码,如果仍然失败,请根据您的尝试修改问题。

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)