从列表索引过滤列表的值

时间:2019-07-14 21:03:35

标签: python list indexing

对于列表列表,我编写了一个函数,该函数返回写条件为真的索引:

<nav aria-label="Primary”>
 <button aria-hidden="true">Toggle menu</button>
 <ul>
  <li>
   <a href="#">Link 1</a>
  </li>
  <li>
   <a href="#">Link 2</a>
  </li>
 </ul>
</nav>

输出:     samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]] def check(samples_avg, tracker): out = [[] for _ in samples_avg] for indx, v in enumerate(zip(*samples_avg)): m = max((val, i, indx) for i, val in enumerate(v)) if all(val * 5 < m[0] for i, val in enumerate(v) if i != m[1]): out[m[1]].extend([m[2]]) print (out)

但是我想为该列表添加函数,以从另一个列表返回真实索引处的元素。因此,从上面的out = [[], [0], [1, 2]]中,可以找到这样的列表:

out

我希望得到这样的输出:

tracker = ['meow', 'woof', 'quack', 'where', 'what', 'who', 'dont', 'call', 'me']

为此,我写了:

g = [[], ['meow'], ['woof', 'quack']]

但是,这返回:

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]
tracker = ['meow', 'woof', 'quack', 'where', 'what', 'who', 'dont', 'call', 'me']

def check(samples_avg, tracker):

out = [[] for _ in samples_avg]
g = [[] for _ in out]
for indx, v in enumerate(zip(*samples_avg)):
    m = max((val, i, indx) for i, val in enumerate(v))
    if all(val * 5 < m[0] for i, val in enumerate(v) if i != m[1]):
        out[m[1]].extend([m[2]])
        g = [[t for i in o] for t, o in zip(tracker, out)]
print (out)
print (g)

我该如何解决?任何建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

您只需要以下列表理解即可。

out = [[], [0], [1, 2]]
tracker = ['meow', 'woof', 'quack', 'where', 'what', 'who', 'dont', 'call', 'me']

[[tracker[i] for i in arr] for arr in out]

结果:

[[], ['meow'], ['woof', 'quack']]

您可能希望在函数中的if语句之外使用它。