Python: 如何在可变索引位置通过迭代插入到嵌套列表中?
Python: How to insert into a nestled list via iteration at a variable index position?
我已经为这个问题苦苦思索了一段时间,所以希望你能帮助我!所以这就是我所拥有的:
grouped_list = [[["0","1","1","1"]["1","0","1","1"]][["1","1","0","1","1","1"]][["1","1","1","0","1"]]]
index_list = [[2,3][][4]]
并且我想在 index_list 中指示的相应索引位置处向 grouped_list 的子列表中插入一个“-”。结果如下:
[[["0","1","-","-","1","1"]["1","0","-","-","1","1"]][["1","1","0","1","1","1"]][["1","1","1","0","-","1"]]]
因为我是 python 的新手,所以这是我可笑的尝试:
for groups in grouped_list:
for columns in groups:
[[columns[i:i] = ["-"] for i in index] for index in index_list]
我得到一个语法错误,指向列表理解中的 =,但我认为它不会真正开始。我不想手动执行此操作,因为我正在处理相当大的数据集,所以某种迭代会很好!我是否需要使用 numpy 或 pandas 来做这样的事情?这可以通过巧妙地使用压缩来解决吗?非常感谢任何帮助!
我想你想要的是
for k, groups in enumerate(grouped_list):
for columns in groups:
for i in sorted(index_list[k], reverse=True):
columns.insert(i, "-")
在这里,我遍历分组列表并保存索引 k
以确定要使用 index_list 中的哪些索引。我使用 list.insert
修改列表 in-place,这会在适当的位置插入元素。请注意,这仅在索引从最大到最小使用时才有效,否则位置会发生变化。这就是我在循环中使用 sorted
的原因。
遗憾的是我不能把它做成一个班轮:
def func(x, il):
for i in il:
x.insert(i,'-')
return x
s = [[func(l, il) for l in ll] for (ll, il) in zip(grouped_list, index_list)]
我已经为这个问题苦苦思索了一段时间,所以希望你能帮助我!所以这就是我所拥有的:
grouped_list = [[["0","1","1","1"]["1","0","1","1"]][["1","1","0","1","1","1"]][["1","1","1","0","1"]]]
index_list = [[2,3][][4]]
并且我想在 index_list 中指示的相应索引位置处向 grouped_list 的子列表中插入一个“-”。结果如下:
[[["0","1","-","-","1","1"]["1","0","-","-","1","1"]][["1","1","0","1","1","1"]][["1","1","1","0","-","1"]]]
因为我是 python 的新手,所以这是我可笑的尝试:
for groups in grouped_list:
for columns in groups:
[[columns[i:i] = ["-"] for i in index] for index in index_list]
我得到一个语法错误,指向列表理解中的 =,但我认为它不会真正开始。我不想手动执行此操作,因为我正在处理相当大的数据集,所以某种迭代会很好!我是否需要使用 numpy 或 pandas 来做这样的事情?这可以通过巧妙地使用压缩来解决吗?非常感谢任何帮助!
我想你想要的是
for k, groups in enumerate(grouped_list):
for columns in groups:
for i in sorted(index_list[k], reverse=True):
columns.insert(i, "-")
在这里,我遍历分组列表并保存索引 k
以确定要使用 index_list 中的哪些索引。我使用 list.insert
修改列表 in-place,这会在适当的位置插入元素。请注意,这仅在索引从最大到最小使用时才有效,否则位置会发生变化。这就是我在循环中使用 sorted
的原因。
遗憾的是我不能把它做成一个班轮:
def func(x, il):
for i in il:
x.insert(i,'-')
return x
s = [[func(l, il) for l in ll] for (ll, il) in zip(grouped_list, index_list)]