迭代for循环

2024-09-27 23:27:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段Python代码:

time =  ['0115','0215','0315','0715','0815','0915','1015']
N_profiles_select = 582
cldsat_timeafter = 0815
cldsat_timebefore = 0115

if time < cldsat_timeafter and time > cldsat_timebefore:  
    for i in range(N_profiles_select):  
        print time

现在它打印第一次(0215),582次,然后打印第二次(0315)582次,然后打印第三次582次。你知道吗

我希望它按以下顺序打印时间:

0215,0315,0715, 0215,0315,0715

然后将这三个数字重复582次。我该怎么做?你知道吗


Tags: and代码inforiftime顺序时间
3条回答

可以使用^{}^{}来避免对列表进行多次迭代:

from itertools import chain, repeat

time =  ['0115','0215','0315','0715','0815','0915','1015']
N_profiles_select = 582
cldsat_timeafter = '0815'
cldsat_timebefore = '0115'

filtered_elements = [x for x in time if cldsat_timebefore < x < cldsat_timeafter]
for elem in chain.from_iterable(repeat(filtered_elements, N_profiles_select)):
    print elem

您在寻找:

for i in range(N_profiles_select):
    for t in time:
        if t < cldsat_timeafter and t > cldsat_timebefore:
            print t

(刚刚更改了for循环的顺序)

这只是为了说明逻辑。但是您最好确定要一次性打印time的哪些元素,而不是测试N_profiles_select次。你知道吗

你应该做:

selectedTimes = [t in time if t < cldsat_timeafter and t > cldsat_timebefore]
for i in range(N_profiles_select):
    for t in selectedTimes:
        print t

这就给出了你的要求:

time =  ['0115','0215','0315','0415','0615','0715','0815','0915','1015']
N_profiles_select = 582
cldsat_timeafter = '0815'
cldsat_timebefore = '0115'

for i in range(N_profiles_select):
    for t in time:
        if t < cldsat_timeafter and t > cldsat_timebefore:
            print t

印刷品:

0215
0315
0415
0615
0715

N_profiles_select

PS:在将值设置为cldsat_timeaftercldsat_timebefore时,请记住使用单引号'。你知道吗

相关问题 更多 >

    热门问题