Python code voor omkeren van strings in een list

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • baue22
  • Registratie: April 2018
  • Laatst online: 30-04-2024
Goedendag,

Ik ben nog (relatief) nieuw op het forum dus mijn excuses als ik iets niet volgens de richtlijnen vraag/post.

Ik volg een python cursus waar ik na ieder blok theorie een aantal opdrachten krijg. Nu heb ik een opdracht gekregen die niet in mijn theorie staat uitgewerkt en als ik naar de uitwerking van de opgave kijk word ik ook niet veel wijzer.

Ik heb een screenshot gemaakt van de opdracht. De vraag in is in de groene markdowncell, de code in codecell en de uitwerking staat eronder.

Ik sna dat ze dus eerst een leeg list aanmaken, vervolgens maken ze een functie om de strings in de list om te keren, maar hier ben ik het kwijt. Als ik het goed begrijp is 'for i in string_list:' om ieder teken in de lijst te selecteren maar wat betekent daarna die 'reverse_result.append(i[::-1])'? Is die(i[::-1]) iets van een omdraaicode? Zo ja, zijn er meer van dit soort codes?
Ik heb ook nog een digitaal handboek (thinkpython) waar ik soms wat in probeer op te zoeken als ik het niet weet, maar ik vind het vaak lastig om in zo een boek te vinden wat ik zoek, heeft iemand daar nog tips of tricks voor?
Afbeeldingslocatie: https://tweakers.net/i/vlgKo-SyBIK6ZybhHf98-9uq-CE=/800x/filters:strip_icc():strip_exif()/f/image/rISDSEN3IfzhA0MrkS3ZlMrB.jpg?f=fotoalbum_large

Alle oplossingen en tips zijn welkom!
Ik zie graag jullie reacties tegemoet!

Beste antwoord (via baue22 op 07-04-2021 16:57)


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoals @Rukapul aanhaalt gaat het inderdaad om string slicing. Het stukje i[::-1] zorgt ervoor dat een string gereversed wordt.

De code lijkt mij overigens niet volledig correct, want als je de reverse_strings_list meerdere malen aanroept zullen de elementen er allemaal dubbel instaan, de initialisatie van de lege list gebeurt immers buiten de scope van de functie.

Ik zou dit zelf oplossen d.m.v. list comprehension, dan is de functie een eenvoudige oneliner, en hoef je niet expliciet een nieuwe lege array aan te maken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Alle reacties


Acties:
  • +2 Henk 'm!

  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 19:34
Zoek op string slicing. De derde parameter is voor stride. De eerste twee geven begin en einde aan (beide leeg hier voor gehele string)

Als de rest van de opgaven en cursus ook zo is dan twijfel ik aan de kwaliteit van de cursus.

i is hier als variabele naam erg ongelukkig gekozen. Het is geen teken/karakter zoals je denkt maar een string (een item uit een lijst).

[ Voor 23% gewijzigd door Rukapul op 06-04-2021 12:24 ]


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoals @Rukapul aanhaalt gaat het inderdaad om string slicing. Het stukje i[::-1] zorgt ervoor dat een string gereversed wordt.

De code lijkt mij overigens niet volledig correct, want als je de reverse_strings_list meerdere malen aanroept zullen de elementen er allemaal dubbel instaan, de initialisatie van de lege list gebeurt immers buiten de scope van de functie.

Ik zou dit zelf oplossen d.m.v. list comprehension, dan is de functie een eenvoudige oneliner, en hoef je niet expliciet een nieuwe lege array aan te maken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • +1 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Zoals @Rukapul al zegt, heeft de variabele i een ongelukkige naam.
for i in string_list betekent niet dat je ieder teken uit de list neemt, maar ieder object (in dit geval strings). De variabele i neemt de waarden Delft, Rotterdam etc aan. [::-1] draait inderdaad de string om.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • baue22
  • Registratie: April 2018
  • Laatst online: 30-04-2024
Rukapul schreef op dinsdag 6 april 2021 @ 12:20:
Als de rest van de opgaven en cursus ook zo is dan twijfel ik aan de kwaliteit van de cursus.
Hoe bedoel je? Hoe zou ik het dan kunnen leren?

Acties:
  • 0 Henk 'm!

  • baue22
  • Registratie: April 2018
  • Laatst online: 30-04-2024
Dank voor jullie antwoorden! Voor degene die tegen hetzelfde aanlopen, https://www.digitalocean....slice-strings-in-python-3

En heeft iemand verder nog tips voor een handboek? Of wat jullie gebruiken als je tegen problemen aanloopt in python (maar dan voor beginners).

Acties:
  • +1 Henk 'm!

  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 19:34
baue22 schreef op dinsdag 6 april 2021 @ 12:42:
[...]

Hoe bedoel je? Hoe zou ik het dan kunnen leren?
De voorbeeld code lijkt heel erg op code die door een beginner is geschreven met achtergrond in een oude imperatieve taal.

Alle naamgeving is slecht en on-Pythons, de variabele wordt buiten de functie geïnitialiseerd, etc.

Het voorbeeld gaat verder in op een klein detail: slicing is extreem nuttig maar stride kan best wat later aan bod komen.

Deze opdracht leent zich bij uitstek voor een elegante Python oplossing. Bijvoorbeeld met een list comprehension.

Acties:
  • +1 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
baue22 schreef op dinsdag 6 april 2021 @ 12:44:
En heeft iemand verder nog tips voor een handboek? Of wat jullie gebruiken als je tegen problemen aanloopt in python (maar dan voor beginners).
Iets als google of python.org, die site is erg goed.. Heel wat opties ook daar: https://wiki.python.org/moin/BeginnersGuide of simpelweg https://docs.python.org/3/tutorial/

Ik ben het eens dat dit er niet ok uit ziet, ter vergelijking, de iets mooiere versie:
Python:
1
2
3
4
5
def reverse_encode_string_list(string_list):
    return [s[::-1] for s in string_list]

city_list = ['Delft', 'Rotterdam', 'Amsterdam', 'Utrecht']
reverse_encode_string_list(city_list)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1