如何在列表中创建子列表?
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
以上将创建一个包含 lst
和 st
的新列表,并且 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)
我对如何在 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
以上将创建一个包含 lst
和 st
的新列表,并且 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)