如何在python中的for循环中递增1或2

时间:2018-06-05 20:57:07

标签: python python-3.x for-loop

我创建了这个有效的代码,但我需要它更通用。看看:

if (card_task_e[1] > card_task_e[2]): #Starting with 1
    ol_task_e.append(card_task_e[1])
    counte+=1
if (card_task_e[1] > card_task_e[4]):
    counte+=1
    ol_task_e.append(card_task_e[1])
if (card_task_e[1] > card_task_e[6]):
    counte+=1
    ol_task_e.append(card_task_e[1])
if (card_task_e[1] > card_task_e[8]):
    counte+=1
    ol_task_e.append(card_task_e[1])
if (card_task_e[1] > card_task_e[10]):
    counte+=1
    ol_task_e.append(card_task_e[1])
if (card_task_e[1] > card_task_e[12]):
    counte+=1
    ol_task_e.append(card_task_e[1])
if (card_task_e[3] > card_task_e[4]): #Going onto 3
    counte+=1
    ol_task_e.append(card_task_e[3])
if (card_task_e[3] > card_task_e[6]):
    counte+=1
    ol_task_e.append(card_task_e[3])
if (card_task_e[3] > card_task_e[8]):
    counte+=1
    ol_task_e.append(card_task_e[3])
if (card_task_e[3] > card_task_e[10]):
    counte+=1
    ol_task_e.append(card_task_e[3])
if (card_task_e[3] > card_task_e[12]):
    counte+=1
    ol_task_e.append(card_task_e[3])
if (card_task_e[5] > card_task_e[6]): #Going onto 5
    counte+=1
    ol_task_e.append(card_task_e[5])
if (card_task_e[5] > card_task_e[8]):
    counte+=1
    ol_task_e.append(card_task_e[5])
if (card_task_e[5] > card_task_e[10]):
    counte+=1
    ol_task_e.append(card_task_e[5])
if (card_task_e[5] > card_task_e[12]):
    counte+=1
    ol_task_e.append(card_task_e[5])
if (card_task_e[7] > card_task_e[8]): #Going onto 7
    counte+=1
    ol_task_e.append(card_task_e[7])
if (card_task_e[7] > card_task_e[10]):
    counte+=1
    ol_task_e.append(card_task_e[7])
if (card_task_e[7] > card_task_e[12]):
    counte+=1
    ol_task_e.append(card_task_e[7])
if (card_task_e[9] > card_task_e[10]): #Going onto 9
    counte+=1
    ol_task_e.append(card_task_e[9])
if (card_task_e[9] > card_task_e[12]):
    counte+=1
    ol_task_e.append(card_task_e[9])
if (card_task_e[11] > card_task_e[12]): #Finishing with 11
    counte+=1
    ol_task_e.append(card_task_e[11])

正如你所看到的,我有很多if条件,如果我放一个for循环,我觉得它可以更容易效率,但我真的不确定如何在Python中做到这一点。

请注意,数组“card_task_e”的长度可以从最低0或高达50变为。

如果有人可以帮我解决如何使用for循环更好的方法,我会非常感激。

5 个答案:

答案 0 :(得分:1)

您将需要嵌套循环。

for a in range(1,12,2):
    for b in range(a+1,13,2):
        if card_task_e[a] > card_task_e[b]:
            ol_task_e.append(card_task_e[a])
            counte += 1

答案 1 :(得分:1)

未经测试,但此的某些变体将起作用; - )

n = len(card_task_e)
for i in range(1, n, 2):
    base = card_task_e[i]
    for j in range(i+1, n, 2):
        if base > card_task_e[j]:
            counte += 1
            ol_task_e.append(base)

答案 2 :(得分:1)

  

哈哈,应该检查数组的第一个值是否大于数组中其余的偶数索引。 - A. Bhatnagar

为什么不简单地使用列表切片进行测试?

a = [16,1,2,3,4,5,6,7,8,9]
print ( a[0] > max ( a[2::2] ) ) # prints True

a = [16,1,2,3,4,5,6,7,8,9,22]
print ( a[0] > max ( a[2::2] ) ) # prints False

a[2::2]a的第2个元素开始,每隔2个元素结束一次。 max(..)计算其中最大的一个,a[0] > max(..)检查a的第一个元素是否大于该列表中的所有其他偶数值。

答案 3 :(得分:0)

这适用于任何长度的card_task_e

首先,我们遍历奇数整数,从1到长度。在内部,我们在当前奇数索引处开始的偶数整数之间循环。每个for循环中的尾部2告诉循环在循环的每次迭代中递增2。

list_size = len(card_task_e)
for odd_index in range(1, list_size, 2):
    for even_index in range(odd_index + 1, list_size, 2):
        ol_task_e.append(card_task_e[odd_index])
        counte += 1

答案 4 :(得分:-2)

您可以使用在for循环的每次传递中递增2的计数器来引用特定的列表元素。

counter = 0
for ____ in ____:
    counter += 2
    <do something to> some_list[counter]

您还可以在循环内添加if语句来指示计数器的递增方式。