繁体   English   中英

使用其他子列表提取子列表中的元素

[英]Extract element in sublist using other sublist

我有 2 个嵌套的 arrays

Test = [['c','d','b','t','j','n','k','s','p','t','k'],['l','u','y','r','c','b']]

Sample = [[1,0,1,1,2,0,3,4,0,0,4],[1,0,1,2,0,3]]

我想要 output 就像 Sample 数组中的 0 一样。我想在 Test 数组中提取相应的字母。两个数组长度相同

Output = [['d','n','p','t],['u','c']]

这应该有效:

Test = [['c','d','b','t','j','n','k','s','p','t','k'],['l','u','y','r','c','b']]
Sample = [[1,0,1,1,2,0,3,4,0,0,4],[1,0,1,2,0,3]]

final_list = []
for j in range(len(Test)):
  sub_list = []
  for i in range(len(Test[j])):
    if Sample[j][i] == 0:
      sub_list.append(Test[j][i])
  final_list.append(sub_list)

final_list 是您预期的 output

import numpy as np
res = [list(np.array(a)[np.array(b) == 0]) for a,b in zip(Test, Sample)]

这似乎是zip()列表推导的工作:

result = [
    [t for t, s in zip(test, sample) if s == 0]
    for test, sample in zip(Test, Sample)
]

结果:

[['d', 'n', 'p', 't'], ['u', 'c']]

for循环和zip()完成所有工作

final_list = []

for x,y in zip(Test, Sample):
    _list=[]                   # Temp. list to append to

    for i,j in zip(x,y):
        if j == 0:
                _list.append(i)
    final_list.append(_list)   # appending to final list to create list of list
    del _list                  # del. the temp_list to avoid duplicate values
    
final_list 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM