我想在list
中生成一个list
:
现在,我基本上有两个选择,要么通过文本文件input
list
,要么我应该自己生成list
。
是否可以使用嵌套循环生成这种类型的列表?
[[0,0,0], [0,0,0] ,[0,0,0], [0,0,0,], [0,0,0]]
我想把-1
放在每个子列表的中间0的地方,比如[0, -1, 0]
,有5
子列表,所以-1
应该插入5
次
所以期望的结果是
[[0,-1,0], [0,0,0] ,[0,0,0], [0,0,0,], [0,0,0]]
[[0,0,0], [0,-1,0] ,[0,0,0], [0,0,0,], [0,0,0]]
[[0,0,0], [0,0,0] ,[0,-1,0], [0,0,0,], [0,0,0]]
[[0,0,0], [0,0,0] ,[0,0,0], [0,-1,0,], [0,0,0]]
[[0,0,0], [0,0,0] ,[0,0,0], [0,0,0,], [0,-1,0]]
在我的实际工作中,我有38个子列表,为了方便,我在这里只展示了5个。
my attempt -
目前我做这个用json.loads
然后输入这个字典收集使用append,进一步将它转换成一个列表,然后我将使用这些值。但是,这个方法对我来说太麻烦了。
F = []
import json
with open('unitvalue.txt') as f:
f_1 = {int(key): json.loads(val) for key, val in json.loads(f.readline()).items()}
f_2 = {int(key): json.loads(val) for key, val in json.loads(f.readline()).items()}
f_3 = {int(key): json.loads(val) for key, val in json.loads(f.readline()).items()}
f_4 = {int(key): json.loads(val) for key, val in json.loads(f.readline()).items()}
f_5 = {int(key): json.loads(val) for key, val in json.loads(f.readline()).items()}
其中unitvalue.txt
包含
{"1":"[0,-1,0]", "2":"[0,0,0]","3":"[0,0,0]", "4":"[0,0,0]", "5":"[0,0,0]"}
{"1":"[0,0,0]", "2":"[0,-1,0]","3":"[0,0,0]", "4":"[0,0,0]", "5":"[0,0,0]"}
{"1":"[0,0,0]", "2":"[0,0,0]","3":"[0,-1,0]", "4":"[0,0,0]", "5":"[0,0,0]"}
{"1":"[0,0,0]", "2":"[0,0,0]","3":"[0,0,0]", "4":"[0,-1,0]", "5":"[0,0,0]"}
{"1":"[0,0,0]", "2":"[0,0,0]","3":"[0,0,0]", "4":"[0,0,0]", "5":"[0,-1,0]"}
您可以使用列表推导式:
n = 5
[[[0, -1, 0] if i == j else [0, 0, 0] for j in range(n)] for i in range(n)]
输出:
[[[0, -1, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, -1, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, -1, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, -1, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, -1, 0]]]