是否有可能在列表中生成所需数字的列表?



我想在list中生成一个list:

现在,我基本上有两个选择,要么通过文本文件inputlist,要么我应该自己生成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]]]

相关内容

  • 没有找到相关文章

最新更新