对于下面编写的代码,我想打印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
当前返回三个空数组。如何解决此问题,使数组包含索引?任何建议将不胜感激!
答案 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]]