Динамически нарезать строку с помощью переменной - PullRequest
2 голосов
/ 22 февраля 2012

Я пытаюсь нарезать строку и вставить компоненты в список (или индекс, или установить, или что-нибудь), затем сравнить их, так что

Введите:

abba

Выход:

['ab', 'ba']

Учитывая переменную длину ввода.

Так что, если я нарежу строку

word = raw_input("Input word"
slicelength = len(word)/2
longword[:slicelength]

такой, что

    list = [longwordleftslice]
    list2 = [longwordrightslice]

    list2 = list2[::-1 ] ## reverse slice
    listoverall = list + list2

Однако встроенная команда среза [:i] указывает, что i будет целым числом.

Что я могу сделать?

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Я предполагаю, что вы используете Python 3. Используйте // вместо /. В Python 3 / всегда возвращает float, что не нравится спискам. // возвращает целое число, обрезающее все после десятичной точки.

Тогда все, что вам нужно сделать, это срезать до и после средней точки.

>>> a = [0, 1, 2, 3, 4]
>>> midpoint = len(a) // 2
>>> a[:midpoint]
[0, 1]
>>> a[midpoint:]
[2, 3, 4]
1 голос
/ 22 февраля 2012

Вы всегда можете сделать это ..

word = "spamspamspam"
first_half = word[:len(word)//2]
second_half = word[len(word)//2:]

Для любой строки s и любого целого числа i, s == s[:i] + [:i] является инвариантом. Обратите внимание, что если len(word) нечетно, во второй «половине» вы получите еще один символ, чем первый.

Если вы используете Python 3, используйте input вместо raw_input.

...