我有一个n元素的列表,我想检查列表中的任何元素x是否可以通过使用其他元素(y)中的一个来实现:
x = y + 1 - 2*(x % 2)
为此,我需要将列表中的每个元素x与所有其他元素一起迭代。我为循环嵌套了两个:
_list = [8,2,0,1]
for x in _list:
for y in _list:
if(x == y + 1 - 2*(x % 2)):
# Do something
else: pass
很明显,这个解决方案的问题是:它使用两个循环而不是一个循环;每个元素自身迭代;对(x,y)将检查两次。你知道吗
有没有其他方法可以用更少的代码和更高效的方式来实现这一点?你知道吗
让我们把你的主要问题再细分一下。你知道吗
从上面看,很明显,如果x是奇数,那么y是偶数,反之亦然。你知道吗
另外,x和y只有1个单位。换句话说,abs(x-y)==1。你的解决方案可以简单地归结为找到满足这个条件的所有数字。您还可以观察到x&y是可交换的。你知道吗
这篇文章不回答“少代码”部分,但回答有效的部分。;)
更新:我收回最后一句的前半部分。你知道吗
您只需要检查当前元素之后的元素
相关问题 更多 >
编程相关推荐