def interval():
data = [1, 2, 12, 13, 22, 23, 32, 33, 42, 43, 52, 53, 62, 63, 72, 73, 82, 83, 92, 93]
minimum = raw_input("Enter the min value")
maximum = raw_input("Enter the max value")
frequency = raw_input("Enter the Freq")
x = []
x.append(float(minimum))
thesum = float(minimum)
for i in range(0, int(maximum)):
if thesum < float(maximum):
thesum = thesum + float(frequency)
x.append(thesum)
print x
if __name__ == '__main__':
interval()
**假设用户分别输入min,max和freq为0,100,20。 因此,间隔为0-20,20-40,40-60,60-80,80-100,我的输出应为
0-20中的值是[1,2,12,13] 20-40的数值是[22,23,32,33] .. 等等! **
如果特定时间间隔内没有值,则输出应该是没有值的列表
答案 0 :(得分:1)
实现这一目标的一种非常天真的方式如下
def group_items(data, low_value, high_value):
return [value for value in data if value >= low_value and value <= high_value]
此函数返回[min, max]
范围内存在的数字列表,因此max
中将(min,max) and (min+freq, max+freq)
计算max
,因为第一个时间间隔的min+freq
为{下一个间隔的{1}}。当然,您可以根据您的要求进行更正。
min_max_pairs = []
for x in xrange(minimum, maximum, frequency):
pair = (x, x+frequency)
min_max_pairs.append(pair)
这将使用频率间隔从用户指定的最小值到最大值创建映射。在您的情况下,min,max和freq中的值为
minimum = raw_input("Enter the min value")
maximum = raw_input("Enter the max value")
frequency = raw_input("Enter the Freq")
返回对,如下所示:
>>> min_max_pairs
[(0, 20), (20, 40), (40, 60), (60, 80), (80, 100)]
现在遍历对并将它们传递给group_items()
以获得所需的结果
for pair in min_max_pairs:
min = pair[0]
max = pair[1]
interval = freq
print ("Range [",min,"-",max,"] : ", group_items(data, min, max))
导致
Range [ 0 - 20 ]: [1, 2, 12, 13]
Range [ 20 - 40 ]: [22, 23, 32, 33]
Range [ 40 - 60 ]: [42, 43, 52, 53]
Range [ 60 - 80 ]: [62, 63, 72, 73]
Range [ 80 - 100 ]: [82, 83, 92, 93]