从嵌套索引列表和嵌套字符串列表创建字符串列表

Create list of strings from nested list of indices and nested list of strings

我有两个嵌套列表:一个包含索引列表,另一个包含字符串列表。第 0 个索引子列表对应于第 0 个字符串子列表。在每个索引子列表中是我想拉入新嵌套列表的相应字符串子列表的字符串索引。

nested_indices = [[3,4,5],[0,1,2],[6,7,8]]
strings_list = [['0a','0b','0c','0d','0e','0f','0g','0g','0h', '0i'],
           ['1a','1b','1c','1d','1e','1f','1g','1g','1h', '1i'],
           ['2a','2b','2c','2d','2e','2f','2g','2g','2h', '2i'],
           ['3a','3b','3c','3d','3e','3f','3g','3g','3h', '3i'],
           ['4a','4b','4c','4d','4e','4f','4g','4g','4h', '4i'],
           ['5a','5b','5c','5d','5e','5f','5g','5g','5h', '5i'],
           ['6a','6b','6c','6d','6e','6f','6g','6g','6h', '6i'],
           ['7a','7b','7c','7d','7e','7f','7g','7g','7h', '7i'],
           ['8a','8b','8c','8d','8e','8f','8g','8g','8h', '8i'],
           ['9a','9b','9c','9d','9e','9f','9g','9g','9h', '9i']]

nested_indices 中的列表在使用中是可变长度的。但是对于这个例子,这是我希望得到的:

expected=[['0d','0e','0f'],['1a','1b','1c'],['2g','2g','2h']]

到目前为止,这是我的代码,它不仅没有给我正确的值,而且还丢失了嵌套列表结构。

new_list = []

for sublist in nested_indices:
    for (item, index) in enumerate(sublist):
        new_list.append(strings_list[item][index])
        
print(new_list)

这导致:['0d', '1e', '2f', '0a', '1b', '2c', '0g', '1g', '2h']

我哪里错了?

使用:

  • 压缩以配对两个嵌套列表中的相应子列表
  • 列表理解以从成对的子列表中获取相应的值

代码

new_list = [[vals[i] for i in idxs] for idxs, vals in zip(nested_indices, strings_list)]

结果

[['0d', '0e', '0f'], ['1a', '1b', '1c'], ['2g', '2g', '2h']]

好了

for i,idx in enumerate(nested_indices):
    print(i)
    nested_list=[]
    for j in idx:
        print(j)
        nested_list.append(strings_list[i][j])
    output_f.append(nested_list)

您的代码中的问题是您没有获得 sublist 索引。你应该枚举两次。

new_list = []

for sublistKey,sublistValue in enumerate(nested_indices):
    x = []
    for (item, index) in enumerate(sublistValue):
        x.append(strings_list[sublistKey][index])
    new_list.append(x)      

print(new_list) # expected result = [['0d', '0e', '0f'], ['1a', '1b', '1c'], ['2g', '2g', '2h']]