我正在处理我的python脚本,因为我存储了数组中的元素列表。
我在for循环中运行代码时遇到了问题。
当我尝试这个时:
program_X = list()
program_time = list()
for ind, row in enumerate(programs):
program_X.append(position_start)
program_length = minutes_length
program_time.append(program_length)
program_X = map(str, program_X)
program_time = map(str, program_time)
#get the list of position_X for all buttons
for pos_X in program_X:
#find the position with 375
if pos_X == '375':
print program_time
它将打印7次元素列表,它应该是一次:
16:16:57 T:6044 NOTICE: ['30', '150', '180', '60', '30', '30', '30', '30', '30', '30'...etc]
16:16:57 T:6044 NOTICE: ['30', '150', '180', '60', '30', '30', '30', '30', '30', '30'...etc]
16:16:57 T:6044 NOTICE: ['30', '150', '180', '60', '30', '30', '30', '30', '30', '30'...etc]
16:16:57 T:6044 NOTICE: ['30', '150', '180', '60', '30', '30', '30', '30', '30', '30'...etc]
16:16:57 T:6044 NOTICE: ['30', '150', '180', '60', '30', '30', '30', '30', '30', '30'...etc]
16:16:57 T:6044 NOTICE: ['30', '150', '180', '60', '30', '30', '30', '30', '30', '30'...etc]
16:16:57 T:6044 NOTICE: ['30', '150', '180', '60', '30', '30', '30', '30', '30', '30'...etc]
如果我在program_time
循环之外使用for pos_X
,它将仅打印元素列表一次而不打印7次。我想在program_time
中使用for pos_X
,以便我可以开始计算当时的代码。
您能否帮助我如何在program_time
循环中使用for pos_X
只打印一次元素列表而不重复7次?
编辑:当我尝试这样做时,我无法传递if语句:
#get the list of position_X for all buttons
for pos_X in set(program_X):
#find the position with 375
if pos_X == '375':
program_lengths = program_time
if program_lengths >= '30':
print "hello 1"
continue
答案 0 :(得分:0)
如果没有看到代码段的整个上下文,很难分辨,但有一些明显的问题:
for ind, row in enumerate(programs):
program_X.append(position_start)
program_length = minutes_length
program_time.append(program_length)
遍历programs
(无论是什么),然后将完全相同的值附加到列表program_X
和program_time
- 因为您需要在每次迭代中使用相同的变量(position_start
和minutes_length
)。因此,如果position_start
为375
,programs
有7项,那么您将获得相同的输出7次。
答案 1 :(得分:0)
这种情况正在发生,因为program_X
包含多个375
值的元素。查看代码时,只有在program_time
等于pos_X
时才打印375
。您还需要输出一次。因此,实现它的最佳方法是在break
指令之后使用print program_time
语句:
for pos_X in program_X:
#find the position with 375
if pos_X == '375':
print program_time
break
另一种方法是使用program_X
迭代set()
的唯一值:
for pos_X in set(program_X):
#find the position with 375
if pos_X == '375':
print program_time
看看你的帖子的编辑,我得到了你想要实现的一些暗示。使用以下代码删除整个代码的第二个for loop
。看看它是否有帮助,然后我会向你解释:
prog_Xtime = dict(zip(program_X,program_time))
for pos_X in prog_Xtime:
if pos_X == '375':
if prog_Xtime[pos_X] >= '30':
print "hello 1"