Вы можете использовать список понимание и использовать step
аргумент range
:
[shv[i:i+2] for i in range(0, len(shv)-1, 2)]
Для произвольного n
:
def my_awesome_grouping_function(shv, n):
return [shv[i:i+n] for i in range(0, len(shv)-(n-1), n)]
Демо:
>>> shv="abcdef"
>>> [shv[i:i+2] for i in range(0, len(shv)-1, 2)]
['ab', 'cd', 'ef']
>>> [shv[i:i+3] for i in range(0, len(shv)-2, 3)]
['abc', 'def']
Я обрезается верхняя граница, потому что Я решил, что вам не нужны никакие завершающие неполные пары. Вы? Если вы просто перейдете на len(shv)
, я верю, что вы получите оставшиеся len(shv) % n
буквы в последнем элементе.
>>> shv="abcdefgh"
>>> [shv[i:i+3] for i in range(0, len(shv), 3)]
['abc', 'def', 'gh']
>>> [shv[i:i+3] for i in range(0, len(shv)-1, 3)]
['abc', 'def', 'gh']
>>> [shv[i:i+3] for i in range(0, len(shv)-2, 3)]
['abc', 'def']
(Как вы видите выше, это должно быть len(shv)-(n-1)
для обрезки работать.)
В вашем примере вы показываете кортеж (игнорируя опечатку, где вы хотите запятую, а не точку с запятой). –