python - 我想在嵌套列表 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[:])
可以工作。原因是如果你 append 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)
推荐阅读
- python - 使用 Python Pandas 将嵌套的 json 解析为 csv
- javascript - http resquest中的多个数据包
- python - 熊猫在将值设置为数据框时更改日期时间
- kubernetes - Janusgraph 部署在 kuberntes 上,存储为 Cassandra 给出错误:无法实例化配置的图
- linux - ';'的计数 在列
- oracle - Oracle 将结果集放入 FORALL 中的变量中
- c# - 没有详细信息的 Elasticsearch serilog 错误
- flutter-web - 使用 Flutter 在 Web 浏览器中获取位置?
- python - 校正时间序列中的时钟漂移
- r - ggplot2 中 facet_wrap() 的手动中断