s = input()
if s == s[::-1]:
print("True")
else:
print("False")
>>> abcba
True
Что такое срез списка?
Операции нарезки не являются специфическими для списков, и все упорядоченные последовательности в python поддерживают нарезку, например строки и кортежи.
Тип возвращаемого результата среза такой же, как у объекта среза, и он возвращает подпоследовательность объекта среза, например: возвращение списка в срез списка,
Срезы строк возвращают строки.
Элементы подпоследовательности, созданные срезом, являются копиями оригинала. Таким образом, срез — это неглубокая копия.
Графический анализ срезов
li=["A","B","C","D"]
# 格式:li[start : end : step]
# start 是切片起点索引,end 是切片终点索引,但切片结果不包括终点索引的值。step 是步长默认是 1。
# [start : end : step) 左开右闭
t=li[0:3] ["A","B","C"] #起点的0索引可以省略,t=li[:3]
t=li[2: ] ["C","D"] #省略end,则切到末尾
t=li[1:3] ["B","C"]
t=li[0:4:2] ["A","C"] #从li[0]到li[3],设定步长为2。
В случае определенного признака шага, начала и конца могут смешиваться прямое и обратное индексирование, несмотря ни на что, вы должны убедиться, что
Между началом и концом есть интервал элемента, соответствующий направлению шага, иначе пустой список будет вырезан.
Case 1
t=li[0:2] t=li[0:-2] t=li[-4:-2] t=li[-4:2]
Приведенные выше результаты одинаковы: t равно ["A","B"].
Case 2
t=li[-1:-3:-1] t=li[-1:1:-1] t=li[3:1:-1] t=li[3:-3:-1]
Приведенные выше результаты одинаковы: t равно ["D","C"].
Case 3
t=li[-1:-3] t=li[-1:1] t=li[3:1] t=li[3:-3]
Оба вырезают пустой список.
При этом положительный или отрицательный шаг определяет порядок сбора элементов результата среза.
Отсутствие начала и конца означает таргетинг на весь исходный список.
t=li[::-1] t--->["C","B","A"] #Обратное вырезание, вырезание всего.
t=li[:] t--->["A","B","C","D"] #Прямая касательная ко всем.
Принцип нарезки
Маленький енот, чтобы изучить вещь, сначала изучите ее внешний вид, затем проанализируйте ее внутреннюю реализацию и, наконец, проверьте исходный код, чтобы тщательно изучить, как она реализована.
Следует отметить, что при нарезке списка создается копия списка, а не то же пространство, что и исходный список.
x=[1,2,3]
y=x[:]
x[0]=-1
print(y) #输出[1,2,3]
операция записи среза
Вставьте несколько элементов после 2, вы должны использовать список
#case 1
>>> x=[1,2,3,4,5]
>>> x[2:0]=100 #在2后面插入若干个元素,应该用列表
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
>>> x[2:0]=[100]
>>> x
[1, 2, 100, 3, 4, 5]
#case 2
>>> x[2:4]=None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
>>> x[2:4]=[None]
>>> x
[1, 2, None, 5]
удалить фрагмент
>>> del x[2:3] #删除切片
>>> x
[1, 2, 3, 4, 5]
Для среза x[from:to] предварительная обработка будет выполнена to=max(from+1,to)
>>> x=[1,2,3,4,5]
>>> x[2:1]=[100] #对于切片x[from:to],会进行预处理to=max(from+1,to)
>>> x
[1, 2, 100, 3, 4, 5]
Для операций slice del, если from>to, ничего не делать
>>> del x[2:0]
>>> x
[1, 2, 100, 3, 4, 5]
>>> del x[2:1]
>>> x
[1, 2, 100, 3, 4, 5]
>>> del x[2:3]
>>> x
[1, 2, 3, 4, 5]
Анализ принципа нарезки
Получение определенного элемента данных путем указания нижнего индекса или получение набора элементов последовательности путем указания диапазона нижних индексов — такой способ доступа к последовательности называется нарезкой. В некоторых местах это также называется шардингом.
Сначала проанализируйте операцию среза из нижнего слоя:
Фрагмент списка, который вызывается внутри__getitem__
,__setitem__
,__delitem__
и функция среза. Функция slice связана с функцией range().
Ключ, передаваемый слайсу, является специальным объектом слайса. Этот объект имеет свойства, описывающие ориентацию запрошенного среза.
a = [1,2,3,4,5,6]
x = a [ 1 : 5 ] # x = a.__getitem__(slice( 1, 5, None))
a [ 1 : 3 ] = [10, 11, 12 ] # a.__setitem__(slice(1, 3, None), [ 10, 11, 12 ])
del a [ 1 : 4 ] # a.__delitem__(slice(1, 4, None))
Посмотрите на конкретную реализацию кода
def between(beg, end, mid):
# 判断mid是否位于begin和end之间
return end > mid >= beg or end < mid <= beg
def get_slice(a, beg, end, delta=1):
# 数组切片get方式
if delta == 0:
raise ValueError("slice step cannot be 0")
# 将负数下标转化一下
if beg < 0:
beg += len(a)
if end < 0:
end += len(a)
# 如果转化完成之后依然不在合法范围内,则返回空列表
if beg < 0 and end < 0 or beg >= len(a) and end >= len(a):
return []
# 如果方向不同,则返回空列表
if (end - beg) * delta <= 0:
return []
# 将越界的部分进行裁剪
beg = max(0, min(beg, len(a) - 1))
end = max(-1, min(end, len(a)))
ans = []
i = beg
while between(beg, end, i):
ans.append(a[i])
i += delta
return ans
def set_slice(a, li, beg, end, delta=1):
if delta == 0:
raise ValueError("slice step cannot be 0")
if delta == 1:
# 如果delta==1,那么li的长度可以随意
if beg < 0:
beg += len(a)
if end < 0:
end += len(a)
beg = max(0, min(beg, len(a) - 1))
end = max(-1, min(end, len(a)))
for i in range(beg, end):
del a[beg]
for i in reversed(li):
a.insert(beg, i)
else:
# delta!=1,相当于替换
if len(get_slice(a, beg, end, delta)) != len(li):
raise ValueError("array don't match")
if len(li) == 0:
return
if beg < 0:
beg += len(a)
if end < 0:
end += len(a)
beg = max(0, min(beg, len(a) - 1))
# 用li中的全部元素逐一替换
for ind, value in enumerate(li):
a[ind * delta + beg] = value
Суммировать
1. Это путешествие по изучению Python Бесли является попыткой сделать обучение и жизнь программиста более увлекательными, что можно считать удовлетворением моего желания. Я возобновлю PhotoShop, а позже обновлю более интересные и милые диалоги. Это легко осознать баланс между учебой и жизнью.
2. Изучение знаний - это пошаговый процесс.Так же, как маленький енот, он научился использовать их, но он не углубился в них.Лидер группы выбирается случайным образом для проверки, поэтому мы всегда должны быть любопытными и спросите почему? Вот как можно добиться прогресса.
Рекомендуемое чтение
Рекомендации по трещинам в стене Anaconda | Amway Python IDE
Заметки и примеры изучения Python
Заметки об изучении Python, такие как «объектно-ориентированный, суперклассовый, абстрактный»
Рекомендуемые книги
машинное обучение
В последнее время я готовлюсь к изучению машинного обучения. Начата книга г-на Чжоу Чжихуа об арбузах. Она краткая и глубокая. Ее необходимо прочитать для начального уровня машинного обучения. Ее легко понять. Метод следует рассматривать как китайская книга по машинному обучению, подходящая для отечественных студентов.
Знакомство с Дубаном
Машинное обучение является важной отраслью компьютерных наук и искусственного интеллекта.Как вводный учебник в этой области, эта книга максимально охватывает все аспекты базовых знаний о машинном обучении.
Книга состоит из 16 глав, условно разделенных на 3 части:
Часть 1 (главы 1–3) знакомит с основами машинного обучения;
В части 2 (главы 4–10) обсуждаются некоторые классические и широко используемые методы машинного обучения (деревья решений, нейронные сети, машины опорных векторов, байесовские классификаторы, ансамблевое обучение, кластеризация, уменьшение размерности и метрическое обучение);
Третья часть (главы с 11 по 16) представляет собой расширенные знания, охватывающие выбор функций и разреженное обучение, вычислительную теорию обучения, полууправляемое обучение, вероятностные графические модели, обучение по правилам и обучение с подкреплением.
Я не боюсь быть такой "крутой" девочкой
Это еще одна книга, которую я читал.От чтения речи Лю Юаньюань от супер-оратора до чтения ее книги, в ней рассказывается история пути Лю Юаньюань из колледжа до вступительных экзаменов в аспирантуру, наконец, она стала супер-оратором и, наконец, начала свой бизнес. Ее любовь к метаниям и настойчивость заразили многих людей.Также она рассказала как ее приняли в Пекинский университет за 3 месяца.Ее методика обучения очень эффективна.Если вы хотите повысить эффективность обучения и получить высокий балл,то можете посмотреть его .
Знакомство с Дубаном
Это книга о мотивации роста, написанная для миллионов молодых людей.
В книге собран личный опыт автора и личный опыт, как разные мгновения, показывающие сумятицу взросления, реальность, полезность и жестокость жизни. Когда вы сомневаетесь в своей настойчивости на пути контратаки — вам приходится верить, что судьба дала вам более низкую отправную точку, чем другим, надеясь, что вы проведете всю свою жизнь, борясь за создание истории контратаки джедаев.
«Ханмэн Такако» — это чудо, когда один человек довел это до крайности, и когда уже нет выхода, он может подняться с неба и спастись от смерти.
«Если ты не умрешь, ты не умрешь» Когда вы колеблетесь, стоит ли смело идти вперед, несмотря ни на что, — пока есть место для упорного труда, не нужно отчаиваться; пока есть это направление, вы должны пройти через него.
«Посмотрите, как я справляюсь с этой гребаной жизнью» Если вы не заставите себя бороться до конца с судьбой, и если вы не заставите себя говорить с этим жестоким миром, вы никогда не узнаете, насколько вы сильны.
«Как справиться с неудачной жизнью»
"Я не боюсь быть такой "крутой" девочкой" говорит вам страстными словами - когда другие еще спят, вы можете идти. Вы достигаете, когда другие все еще борются. Потому что есть много причин, чтобы усердно работать, но я не могу найти ни одной причины, чтобы не работать усердно.
Не бойтесь жизни, всегда идите вверх и живите богатой и ослепительной личностью перед лицом невзгод.