对于不好的标题表示歉意。我不确定如何说出我的问题。 我有下面的代码使用称为propadd
的元组列表。 if statement
测试元组的匹配条件。如果匹配只匹配元组列表中的1个元组,它将执行与if语句中相同的代码,以便将此匹配元组分配给变量v,以便用来自此匹配元组的值更新游标行。我想知道是否有办法摆脱if语句后与v完全相同的代码的赋值。在检查匹配的长度时,是否可以在if语句中将列表分配给v?这是遵循这种方法的大量代码的一部分。我相信这样做会使我的代码更快。分配变量名称以列出if语句python
if len([item for item in propadd if item[0]==row1[8] and harversine(custx,custy,item[2],item[3])<1500]) == 1:
v=[item for item in propadd if item[0]==row1[8] and harversine(custx,custy,item[2],item[3])<1500]
row1[1]=v[0][1]
row1[2]=v[0][2]
elif len([item for item in custadd if item[0]==row1[4]]) == 1:
k=[item for item in custadd if item[0]==row1[4]]
row1[1]=k[0][1]
row1[2]=k[0][2]
elif len([item for item in numlist if re.search(r"^[0-9]+(?=\s)",row1[0]) is not None and item[0]==re.search(r"^[0-9]+(?=\s)",row1[0]).group()]) == 1
m=[item for item in numlist if re.search(r"^[0-9]+(?=\s)",row1[0]) is not None and item[0]==re.search(r"^[0-9]+(?=\s)",row1[0]).group()]
row1[1]=m[0][1]
row1[2]=m[0][2]
如果你想让你的代码更快,我相信使用'filter'函数比列表comp更快。当我打字的时候,@MadPhysicist发布了我要说的话:你可以分配'v'然后检查'len(v)',这样list comp只运行一次 –
我会研究'filter'函数。谢谢。 – ketar