我有两个长度为n的元组,我需要检查除了位置w中的元素之外,同一位置中的所有元素是否都相同
if all(tup1[i] == tup2[i] for i in xrange(n) if i != w):
...
为了避免循环(因为这段代码会被多次使用),我尝试使用切片。不幸的是,这不起作用:
if tup1[w-1:w-n:-1] == tup2[w-1:w-n:-1]:
...
我必须写这样的东西吗?你知道吗
if tup1[:w-1] == tup2[:w-1] and tup1[w+1:] == tup2[w+1:]
难道没有更优雅的方法吗?你知道吗
或者循环和切片都不好,有更好的方法来获得我想要的结果吗?(我不能使用过滤器,因为可能有与位置w中的值相同的元素)
我想你已经找到了最好的解决办法:
如果元组非常长,并且您不想复制数据,并且希望提前退出行为,那么使用itertools和操作符有一个更复杂的选择:
这是一个大量的设置工作,逐步的速度不如元组切片,但它确实避免了复制所有的数据,而且它有一个早期的输出。你知道吗
在非极端情况下,我会坚持你的双切片元组等式解决方案。你知道吗
相关问题 更多 >
编程相关推荐