作为 Python 的新手,我花了很长时间弄清楚这两行代码的作用:
for i in [j for j in xrange(0, N) if [k for k in xrange(j) if now[k] == now[j]] == []]:
for j in [k for k in xrange(1, K + 1) if [l for l in xrange(i) if now[l] == k] == []]:
有没有办法重写这个让像我这样的菜鸟也能理解?谢谢。
最佳答案
呃。阅读那是 body 上的痛苦。这是一个很好的例子,说明如何不使用列表理解。
这是一个不使用列表理解的严格重写:
for i in xrange(0, N):
implicit_list_1 = []
for k in xrange(i):
if now[k] == now[i]:
implicit_list_1.append(i)
if implicit_list_1 == []:
for j in xrange(1, K + 1):
implicit_list_2 = []
for l in xrange(i):
if now[l] == j:
implicit_list_2.append(l)
if implicit_list_2 == []:
这里有一个更惯用的重写:
for i in xrange(N):
if now[i] not in now[:i]:
for j in xrange(1, K + 1):
if j not in now[:i]:
这是假设 K
是一个单独的变量,而不是输入错误的 k
。
此外,那些单字母变量名的风格很差。最好使用实际反射(reflect)变量用途的变量名。
关于Python - 这两行是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595861/