Waarom werkt de methode .append() niet op strings, gedragen ze zich niet als lijsten?

Waarom geeft deze instructie een fout, ook al is een string eigenlijk een lijst met karakterconstanten?

string_name = ""  
string_name.append("hello word")  

De reden dat ik verwacht dat dit werkt, is omdat wanneer we for-loop gebruiken, we deze verklaring mogen gebruiken:

for i in string_name:  
    ...

Ik denk dat string_namehier als lijst wordt beschouwd(?)


Antwoord 1, autoriteit 100%

Dat is wat ze je leren in een les over algoritmen en datastructuren, die zich bezighoudt met algoritmische talen (onwerkelijk) in plaats van echte programmeertalen. In Python is een string een string, en een lijst is een lijst, ze zijn anders objecten, kunt u “toevoegen” aan een tekenreeks met behulp van de zogenaamde tekenreeksaaneenschakeling (wat in feite een optelbewerking op tekenreeksen is):

string_name = "hello"  
string_name = string_name + " world"
print(string_name) # => "hello world"

Of een verkorte aaneenschakeling:

string_name = "hello"
string_name += " world"
print(string_name) # => "hello world"

Lijsten en strings behoren tot dit type genaamd iterable. iterables zijn zoals de naam doet vermoeden, iterables, wat betekent dat je ze kunt doorlopen met het sleutelwoord in, maar dat betekent niet dat ze van hetzelfde type zijn van objecten:

for i in '123': # valid, using a string
for i in [1, 2, 3]: # valid, using a list
for i in (1, 2, 3): # valid, using a tuple
for i in 1, 2, 3: # valid, using an implicit-tuple
# all valid, all different types

Ik raad je ten zeerste aan de Python-documentatiete lezen en/of de Python-zelfstudie.

Uit de woordenlijst van Documenten:

itereerbaar
Een object dat zijn leden één voor één kan teruggeven. Voorbeelden van iterables zijn alle reekstypen (zoals list, stren tuple) en sommige niet-reekstypen zoals dict, bestandsobjecten en objecten van alle klassen die u definieert met een __iter__()of __getitem__()methode. Iterables kunnen worden gebruikt in een for-lus en op veel andere plaatsen waar een reeks nodig is (zip(), map(), ) . Wanneer een itereerbaar object als argument wordt doorgegeven aan de ingebouwde functie iter(), retourneert het een iterator voor het object. Deze iterator is goed voor één doorgang over de reeks waarden. Bij het gebruik van iterables is het meestal niet nodig om iter()aan te roepen of zelf met iterator-objecten om te gaan. De for-instructie doet dat automatisch voor u, door een tijdelijke naamloze variabele te maken die de iterator voor de duur van de lus vasthoudt. Zie ook iterator, sequentie en generator.
Meer over iterables.


Antwoord 2

Error is given when u try to append strings.So better first take list and then convert list to string.Code :
               n='qwerty'
               for i in range(1):
                   temp=[]
                   temp.append(n[-3:])
                   temp.append('t')
                   newtemp=' '
                   newtemp=temp[i]+temp[i+1]
                   print(newtemp)

Uitvoer:rtyt

LEAVE A REPLY

Please enter your comment!
Please enter your name here

fourteen − 8 =

Other episodes