我创建了这个有效的代码,但我需要它更通用。看看:
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循环更好的方法,我会非常感激。
答案 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
语句来指示计数器的递增方式。