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

Python 如何在列表中创建子列表?,python,python-3.x,list,sublist,Python,Python 3.x,List,Sublist,我有一个关于如何在python中创建子列表的问题 我想输入3个值,并将它们添加到带有函数的子列表中,然后调用它们3次 但由于某种原因,我无法创建子列表 我希望我的输出是这样的: [string1'、[string2'、[string3']、[10,20,30]、[2.7,5.5,12.2]] 这是我的输出: 您的代码中有几个问题: list=[] 正如Patrick提到的,不要使用关键字作为变量名 while word != 'end': a = int(input("add int:

我有一个关于如何在python中创建子列表的问题

我想输入3个值,并将它们添加到带有函数的子列表中,然后调用它们3次

但由于某种原因,我无法创建子列表

我希望我的输出是这样的: [string1'、[string2'、[string3']、[10,20,30]、[2.7,5.5,12.2]]

这是我的输出:


您的代码中有几个问题:

list=[]
正如Patrick提到的,不要使用关键字作为变量名

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_输入列表中。 如果只希望输入3个值,则暂时不要使用。

你打算在这里干什么?在上面的代码中,您迭代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的新列表,并返回它


现在尝试修复代码,如果仍然失败,请尝试编辑问题。

如果不将问题附加到子列表,则首先会收到所有输入,丢弃旧的输入。然后根据上一次输入构建子列表。不要使用列表、集合、dict、元组、最大值、最小值,。。。作为变量名-您正在跟踪已使用该名称的内置项name@Dinari丢弃旧的输入是什么意思?在每次迭代中重写a、b和word中的值。如果你想存储它们,你需要将它们保存在一个列表中。我几乎解决了所有问题,但问题是我的子列表打印在不同的行中,而不是一行。你是否使用不同的打印功能打印它们?如果是这样,那么它会添加一个换行符。您可以使用print,end=在不使用换行符的情况下打印。这是一个不同的问题,但通过反复试验,我解决了它。我真是太感谢你了!非常感谢你的帮助和耐心!
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)
def fixlist(lst, st):
    lst.append(st)
def fixlist(lst, st):
    new_list = lst+[st]
    return new_list
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)