我对如何在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]
答案 0 :(得分:1)
您的代码中有几个问题:
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_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
不一定是整数。
如果希望附加到函数内的现有列表,则需要使用以下方案:
def fixlist(lst, st):
lst.append(st)
以上内容将修改现有列表。如果要创建新列表,则需要返回新列表:
def fixlist(lst, st):
new_list = lst+[st]
return new_list
上面的代码将使用lst
和st
创建一个新列表,并将其返回。
尝试立即修复您的代码,如果仍然无法解决,请尝试修改问题。
答案 1 :(得分:0)
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)