【发布时间】:2013-12-22 11:13:54
【问题描述】:
我需要一个更好的方法来做到这一点。我是编程新手,但我知道这是一种非常低效的方法,而且我需要一个函数,我只是不知道该怎么做。有什么建议?我非常感谢任何帮助!
for H in range(0,len(a_list)):
if a_list[H] > list4[0]:
list5 = [number_list[i]]
if function(list1,list5) == list1[1]:
if function(list2,list5)== list2[1]:
if function(list3,list5)== list3[1]:
if function(list4,list5)== list4[1]:
list5.append(input('some input from the user'))
other_function(list5)
if list5[1]== 40:
print ('something something')
break out of EVERY loop
else:
for H in range(0,len(a_list)):
if a_list[H] > list5[0]:
list6 = [number_list[i]]
if function(list1,list6) == list1[1]:
if function(list2,list6)== list2[1]:
if function(list3,list6)== list3[1]:
if function(list4,list6)== list4[1]:
if function(list5,list6)== list5[1]:
list6.append(input('some input from theuser'))
other_function(list6)
if list6[1]== 40:
print ('something something')
break out of EVERY loop
else:
etc. (one extra comparison every time)
【问题讨论】:
-
以完全相同的顺序将它们重写为
if X == Y and Z == W and ...? -
这真的是你的代码,还是只是为了显示大量嵌套代码而编造的?代码应该完成什么?是查资料吗?它在执行计算吗?根据这些问题的答案,真正的答案可能是更改您的数据结构以避免对所有条件检查的需要。
-
可能有一种完全不同的更好的方法来做你想做的事情......你能添加对预期功能(输入/输出)的描述吗?
-
请注意,有 6 个变量名称如
list1、list2、...、list6,几乎总是设计错误的标志,因为您不能轻易地迭代即使从您的代码中可以清楚地看出它们是相似的对象,它们也是如此。列表列表或字典可能是更好的选择。 -
是的,这就是代码。 Unfortunatley.. 它必须将函数 (list,list) 的结果与每个列表中索引 1 中的值进行比较。
标签: python for-loop comparison iteration list-comparison