2016-05-16 2 views
0

Я хочу проверить, является ли строка палиндром или нет. Я хочу, чтобы решение, которое выполняет итерацию строки спереди и сзади в одно и то же время. Есть ли решение python, которое делает это с помощью одного цикла?Как итерации строки из передней и задней части одновременно в python?

ответ

4

Вы можете использовать zip() и extended slicing:

for front, back in zip(string, string[::-1]): 
    print(front, back) 

Но если вы просто хотите, чтобы проверить, является ли строка палиндромом, вы можете просто сделать:

if string == string[::-1]: 
    print("Palindrome") 
+0

Или, если вы боитесь, что строка может быть очень длинным, таким образом, что с помощью '' zip' и строку [:: - 1] 'будет делать много ненужной работы в случае, когда есть раннее несоответствие, тогда 'itertools.izip (string, reverseed (string))'. Наверное, с «islice», брошенным туда, чтобы проверить только половину. –

1
input = '12321' 
palindrome = True 
for i in range(len(input)//2): 
    if input[i] != input[len(input) - 1 - i]: 
    palindrome = False 
    break 
print('Is palindrom: ' + str(palindrome)) 
0

Я бы для чего-то вроде:

for i, item in enumerate(string): 
    if item != string[-i]: 
     return False # is not a pallindrome 
return True 
0

Может быть вам не нужен for цикл:

string = "nursesrun" 
reverse = string[::-1] 

if string == reverse: 
    print "string is a palindrome" 
Смежные вопросы