如何解决可以在第二个列表有条件的情况下使用列表理解吗?
这是a previous question I asked的后续工作,内容涉及根据条件逐元素填充新列表。我现在想知道是否可以创建第二个新列表,并且仍然有条件地使用列表理解功能填充第一个新列表。最初我有:
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_list1
条件的threshold
的匹配元素?
就是这样:
j = 0
for 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
...可能具有列表理解功能?
一如既往地感谢您!
解决方法
可以。您可以结合使用列表理解和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,100]
# using numpy's conditional indexing...
new_data2 = data2[data1 > threshold]
print(new_data2) # [500 300 100]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。