我的 Python for 循环给出了结果 None
My Python for loop is giving the result None
在下面的代码中,这个循环应该取一个元组,比如 (1,2,3),字典中的一个键,把它变成一个列表,[1,2,3],贴上一个 1最后,[1,2,3,1] 并且对于每个键,将这个新列表添加到名为 new_training_data.
的更长列表中
这是我写的:
my_training_data={
(1,2,3,4):[1,0,0],
(1.2,1.8,3.2,3.8):[1,0,0],
(1.1,1.9,3.1,3.9):[1,0,0],
(4,3,2,1):[0,1,0],
(3.8,3,2,1.8,1.2):[0,1,0],
(3.9,3.1,1.9,1.1):[0,1,0]
}
def part_1(my_training_data):
for key in sorted(my_training_data):
new_training_data=[]
new_training_data=new_training_data.append(list(key).extend([1]))
return new_training_data
当我输入时
print part_1(my_training_data)
我得到结果None
。
请帮忙!我已经为此苦苦挣扎了一段时间。
PS。我在 IPython 中写这篇文章,已经下载了 64 位 Windows 版本 2.7 的 Anaconda。
您正在 for 循环的每个 运行 中重新初始化 new_training_data
,将其移出。此外,list(key).extend([1])
的结果是 None(返回 None),因此列表在最后一次迭代中将只包含一个 None。
因此,执行以下操作:
def part_1(my_training_data):
new_training_data=[]
for key in sorted(my_training_data):
new_training_data.append(list(key) + [1])
return new_training_data
编辑:完成运行
>>> my_training_data={
... (1,2,3,4):[1,0,0],
... (1.2,1.8,3.2,3.8):[1,0,0],
... (1.1,1.9,3.1,3.9):[1,0,0],
... (4,3,2,1):[0,1,0],
... (3.8,3,2,1.8,1.2):[0,1,0],
... (3.9,3.1,1.9,1.1):[0,1,0]
... }
>>> def part_1(my_training_data):
... new_training_data=[]
... for key in sorted(my_training_data):
... new_training_data.append(list(key) + [1])
... return new_training_data
...
>>> part_1(my_training_data)
[[1, 2, 3, 4, 1], [1.1, 1.9, 3.1, 3.9, 1], [1.2, 1.8, 3.2, 3.8, 1], [3.8, 3, 2, 1.8, 1.2, 1], [3.9, 3.1, 1.9, 1.1, 1], [4, 3, 2, 1, 1]]
如果我理解正确你的问题,这显然是你要找的:
def part_1(my_training_data):
new_training_data = []
for key in sorted(my_training_data):
new_training_data.append(list(key)+[1])
return new_training_data
在下面的代码中,这个循环应该取一个元组,比如 (1,2,3),字典中的一个键,把它变成一个列表,[1,2,3],贴上一个 1最后,[1,2,3,1] 并且对于每个键,将这个新列表添加到名为 new_training_data.
的更长列表中这是我写的:
my_training_data={
(1,2,3,4):[1,0,0],
(1.2,1.8,3.2,3.8):[1,0,0],
(1.1,1.9,3.1,3.9):[1,0,0],
(4,3,2,1):[0,1,0],
(3.8,3,2,1.8,1.2):[0,1,0],
(3.9,3.1,1.9,1.1):[0,1,0]
}
def part_1(my_training_data):
for key in sorted(my_training_data):
new_training_data=[]
new_training_data=new_training_data.append(list(key).extend([1]))
return new_training_data
当我输入时
print part_1(my_training_data)
我得到结果None
。
请帮忙!我已经为此苦苦挣扎了一段时间。
PS。我在 IPython 中写这篇文章,已经下载了 64 位 Windows 版本 2.7 的 Anaconda。
您正在 for 循环的每个 运行 中重新初始化 new_training_data
,将其移出。此外,list(key).extend([1])
的结果是 None(返回 None),因此列表在最后一次迭代中将只包含一个 None。
因此,执行以下操作:
def part_1(my_training_data):
new_training_data=[]
for key in sorted(my_training_data):
new_training_data.append(list(key) + [1])
return new_training_data
编辑:完成运行
>>> my_training_data={
... (1,2,3,4):[1,0,0],
... (1.2,1.8,3.2,3.8):[1,0,0],
... (1.1,1.9,3.1,3.9):[1,0,0],
... (4,3,2,1):[0,1,0],
... (3.8,3,2,1.8,1.2):[0,1,0],
... (3.9,3.1,1.9,1.1):[0,1,0]
... }
>>> def part_1(my_training_data):
... new_training_data=[]
... for key in sorted(my_training_data):
... new_training_data.append(list(key) + [1])
... return new_training_data
...
>>> part_1(my_training_data)
[[1, 2, 3, 4, 1], [1.1, 1.9, 3.1, 3.9, 1], [1.2, 1.8, 3.2, 3.8, 1], [3.8, 3, 2, 1.8, 1.2, 1], [3.9, 3.1, 1.9, 1.1, 1], [4, 3, 2, 1, 1]]
如果我理解正确你的问题,这显然是你要找的:
def part_1(my_training_data):
new_training_data = []
for key in sorted(my_training_data):
new_training_data.append(list(key)+[1])
return new_training_data