Возможно петля вы упомянули это самый очевидный способ, не обязательно самый красивый. Тем не менее, каждое решение O (n) сложности отлично.
lesser_length = min(len(A), len(B))
answer = lesser_length # If one of the lists is shorter and a sublist,
# this will be the answer, because the if condition
# will never be satisfied.
for i in xrange(lesser_length):
if A[i] != B[i]:
answer = i
break
range
вместо xrange
в Python3. Генератор будет лучшим способом при условии, что вы не знаете, когда будет происходить разницу между списками. (В python2, xrange
является генератором. В Python3, xrange
стал регулярной range()
функции.)
списка понимание также жизнеспособный. Я считаю, что это более читаемо.
Если они оба всегда сортируются, тогда существует способ без петель –
Сортировка не гарантируется. Какой ярлык для сортированных петель? – goelakash
Я не думаю, что есть что-то более простое, чем прямолинейная петля над списками, сравнивая элементы и сохраняя дорожку индекса. Это все еще очень простое решение. – Akavall