真实价值回报指数

时间:2019-07-11 17:27:24

标签: python loops numpy

对于下面编写的代码,我想打印for users in collection.find(): start_date, end_date = users['start_date'], users['end_date'] user_data = client.api_call('users.profile.get', """What would I do here?""") user_images[users['user_id']] = user_data['image_72'] block.section( text= f'from *{date_to_words(start_date[0], start_date[1], start_date[2])}* to *{date_to_words(end_date[0], end_date[1], end_date[2])}*' ) block.context(data=(( 'img', user_images[users['user_id']], '_error displaying image_' ), ('text', f'<!{users["user_id"]}>. _Contact them if you have any concerns_' ))) 中的值的索引,对于samples_avg中的每个列表,它们在maxlist中返回true。所以对于列表

samples_avg

我希望返回值像

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]

因为在第一个列表中没有条件为真的索引,所以在第二个列表中索引0为真,在filtered = [[], [0], [1, 2]] 中最后一个列表中索引1和2为真

samples_avg

当前返回三个空数组。如何解决此问题,使数组包含索引?任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

只是稍微修改了列表的理解,使用枚举来获取实际的索引,并且在if子句中使用条件为true而不是映射值。

尝试一下:

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]
def check(samples_avg):
    maxval = [max(x) for x in zip(*samples_avg)]
    return [[i for i,(r, m) in enumerate(zip(row, maxval)) if r >= (m/5)] for row in samples_avg]

print(check(samples_avg))

输出:

[[], [0], [1, 2]]