为了账号安全,请及时绑定邮箱和手机立即绑定

可以在第二个列表中使用带有条件的列表理解吗?

可以在第二个列表中使用带有条件的列表理解吗?

慕盖茨4494581 2023-06-06 10:38:50
这是我问过的关于根据条件按元素填充新列表的上一个问题的后续问题。我现在想知道我是否可以创建第二个新列表,该列表仍然有条件地填充在第一个列表理解中。最初我有: old_list1 = np.reshape(old_data, (49210, 1)) #Reshape into 1D array new_list1 = [None] #Create empty list to be filled max_value = np.nanmax(old_list1) threshold = 0.75 * max_value #Create threshold to be used as condition for new list....然后,根据我对上一个问题的回答,我可以根据threshold以下内容创建一个新列表:new_list1 = [element[0] for element in old_list1 if element[0] > threshold]我有另一个列表 ,old_list2其长度与 相同old_list1。我可以使用仍然以满足条件new_list2的匹配元素为条件的列表理解来创建吗?old_list1threshold也就是说,是这样的:j = 0for i in range(len(old_list1)):    if old_list1[i] > threshold:         new_list1[j] = old_list[i]         new_list2[j] = old_list2[i]         j += 1 ...可能与列表理解?一如既往地谢谢你!
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

是的你可以。您可以结合使用列表理解来zip关联项目。或者,如果您已经拥有数组中的数据numpy,只需使用条件索引:


import numpy as np


data1 = np.array([10, 1, 9, 8])

threshold = 0.75 * np.nanmax(data1)  # 7.5 in this example


data2 = np.array([500, 200, 300, 100])


# using list comprehension and zip

new_data = [t[1] for t in zip(data1, data2) if t[0] > threshold]

print(new_data)   # [500, 300, 100]


# using numpy's conditional indexing...

new_data2 = data2[data1 > threshold]

print(new_data2)  # [500 300 100]


查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信