我想做什么: 我要用户输入学生的姓名和分数:
我的代码:
master_pair=[]
pair=[]
b=int(input())
for i in range(b):
name = input()
score = float(input())
pair.append(name)
pair.append(score)
print("pair")
print(pair)
print("master_pair")
print(master_pair)
master_pair.append(pair)
print("master_pair")
print(master_pair)
pair.clear()
print("pair")
print(pair)
我期望的是: 假设我输入b(上面代码的第三行)的值为2。 并在第一次迭代中将名称输入为“ a”,并将分数设为1,然后在第二次迭代中将名称输入为“ b”,并将分数设为2。 所以我期望的输出是: [[“ a”,1.0],[“ b”,2]]
我得到的是如下 [[],[]]
为了了解事物在循环中的工作方式,我在循环中的不同阶段打印了两个列表(pair和master_pair)的值。
以下是循环工作时打印的输出:
2 一种 1个 对 ['a',1.0] master_pair [] master_pair [['a',1.0]] 对 [] b 2 对 ['b',2.0] master_pair [['b',2.0]] master_pair [['b',2.0],['b',2.0]] 对 []
这里b的值取为2。名字是a,a的分数是1。 第二个名称是b,b的分数取为2。 当我在循环执行完成后尝试打印master_pair的值时,我发现它为空。
我不了解我的理解中有什么问题。 请询问与此问题有关的详细信息。
答案 0 :(得分:0)
您每次必须创建一个新列表:
master_pair = []
b = int(input())
for i in range(b):
name = input()
score = float(input())
pair = [name, score]
master_pair.append(pair)
答案 1 :(得分:0)
这将完美地解决您的问题。
export const getSortedNodesWithChildrenCountLabel = nodes => {
return nodes
.reduce(function f (output, node) {
if (node?.children) {
node.label += ` (${node.children.length})`
node.children = node.children
.reduce(f, [])
}
output.push(node)
return output
}, [])
}