Existuje způsob, jak v jazyce Python vytvořit podřetězec řetězce, abyste získali nový řetězec od třetího znaku do konce řetězce?
Třeba jako myString[2:end]
?
Jestli vynechání druhé části znamená 'až do konce', a když vynecháte první část, začne to od začátku?
>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'
Python tento koncept nazývá "slicing" a funguje nejen na řetězcích. Podívejte se zde na obsáhlý úvod.
Zdá se, že zde chybí jeden příklad: úplná (mělká) kopie.
>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>>
Jedná se o běžný idiom pro vytvoření kopie sekvenčních typů (nikoli internetizovaných řetězců), [:]
. Mělké kopírování seznamu, viz Syntaxe Pythonu pro řezání seznamů používaná bez zjevného důvodu.
Až na slovo "konec" to máte správně. Říká se tomu plátkový zápis. Váš příklad by měl znít:
new_sub_string = myString[2:]
Pokud vynecháte druhý parametr, je to implicitně konec řetězce.