好吧,我确定有一个非常简单的方法可以做到这一点,但我对 python 生疏了,我无法找到 pythonic 的方法来做到这一点。
我有一个列表,代表一天中的几个小时:
import numpy as np
hourOfDay = np.mod(range(0, 100), 24)
然后我想创建一个新列表,它是一个更大的值 0.4
,当小时在 7
和 22
之间时,并且 0.2
否则。
有几个相关帖子here和 here ,但它们并不是我想要的(它们最终得到一个较短的列表,我想要相同长度的列表)。
假设我需要使用列表理解,我试过这个:
newList = [0.4 for hour in hourOfDay if hour <= 7 or hour >= 22 else 0.2]
最佳答案
您对列表的理解略有偏差。另外如果你想要 0.4
当小时介于 7
之间时和 22
, 你需要 7<= hour <= 22
:
import numpy as np
hourOfDay = np.mod(range(0, 100), 24)
newList = [0.4 if 7 <= i <= 22 else 0.2 for i in hourOfDay]
>>> newList
[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2]
关于Python,根据应用于相同长度的现有列表的条件创建新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39769958/