我想在嵌套列表 Python 中附加列表
I want to append list in nested list Python
expression = ['+', '10', 'x']
variables = {"x": (3,4)}
new_expression = []
for key, value in variables.items():
key_index = expression.index(key)
for i in range(3,5):
expression[key_index] = i
new_expression.append(expression)
print("new_expression", new_expression)
结果是 new_expression = [['+', '10', 4], ['+', '10', 4]]
但我想要 new_expression = [['+', '10', 3], ['+', '10', 4]]
将new_expression.append(expression)
改为new_expression.append(expression[:])
即可。
原因是如果你附加 expression
,new_expression
中的每个元素将指向同一个对象。我们需要通过复制来引发一个新的对象。
expression = ['+', '10', 'x']
variables = {"x": (3,4)}
new_expression = []
for key, value in variables.items():
key_index = expression.index(key)
for i in range(3,5):
expression[key_index] = i
new_expression.append(expression[:])
print("new_expression", new_expression)
您可能希望将 for i in range(3,5):
更改为 for i in value:
,因为您已经在 variables
.
中定义了值
精简版:
expression_template = ['+', '10', 'x']
variables = {"x": (3,4)}
new_expression = []
for key, value in variables.items():
key_index = expression_template.index(key)
for i in value:
expression = expression_template[:]
expression[key_index] = i
new_expression.append(expression)
print("new_expression", new_expression)
expression = ['+', '10', 'x']
variables = {"x": (3,4)}
new_expression = []
for key, value in variables.items():
key_index = expression.index(key)
for i in range(3,5):
expression[key_index] = i
new_expression.append(expression)
print("new_expression", new_expression)
结果是 new_expression = [['+', '10', 4], ['+', '10', 4]]
但我想要 new_expression = [['+', '10', 3], ['+', '10', 4]]
将new_expression.append(expression)
改为new_expression.append(expression[:])
即可。
原因是如果你附加 expression
,new_expression
中的每个元素将指向同一个对象。我们需要通过复制来引发一个新的对象。
expression = ['+', '10', 'x']
variables = {"x": (3,4)}
new_expression = []
for key, value in variables.items():
key_index = expression.index(key)
for i in range(3,5):
expression[key_index] = i
new_expression.append(expression[:])
print("new_expression", new_expression)
您可能希望将 for i in range(3,5):
更改为 for i in value:
,因为您已经在 variables
.
精简版:
expression_template = ['+', '10', 'x']
variables = {"x": (3,4)}
new_expression = []
for key, value in variables.items():
key_index = expression_template.index(key)
for i in value:
expression = expression_template[:]
expression[key_index] = i
new_expression.append(expression)
print("new_expression", new_expression)