对于列表列表,我编写了一个函数,该函数返回写入条件为true的索引:
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)
然而,这返回:
g = [[], ['woof'], ['quack', 'quack']]
我怎样才能解决这个问题?任何建议都将不胜感激
您只需要像下面这样的列表理解就可以了
结果:
您可能希望在函数中的
if
语句之外使用它相关问题 更多 >
编程相关推荐