我创建了一个习惯跟踪器应用程序,其中一个功能是返回最长的连续完成习惯。如果有两个或多个习惯的连胜长度相同,我想全部返回。因此,我在 id_list
中保存了习惯 ID,在 streak_length_list
中保存了相应的连续长度。
举个例子:
id_list = [1, 2, 3, 4, 5, 6]
streak_length_list = [2, 5, 6, 6, 6, 1]
longest_streak = max(streak_length_list)
longest_streak_ids = []
如何同时遍历 id_list
和 streak_length_list
并将各自的 ID 附加到 longest_streak_id
列表(如果其长度等于 longest_streak
值)?
答案 0 :(得分:2)
您不需要遍历两个列表,只需遍历 streak_length_list
并使用 enumerate
来获取所有项目的值和索引。如果值等于 longest_streak
,则使用索引从 id_list
longest_streak_ids = [id_list[i] for i, x in enumerate(streak_length_list) if x == longest_streak]
答案 1 :(得分:1)
您可以压缩列表:
longest_streak_ids = [i for i, x in zip(id_list, streak_length_list) if x == longest_streak]
Out[15]: [3, 4, 5]