eysyneidhtos Δημοσ. 21 Δεκεμβρίου 2019 Δημοσ. 21 Δεκεμβρίου 2019 def flatten(field): """Epistrefei lista afairwntas fwliasmenes listes. field -- lista me fwliasmena string. Ka8e lista exei dyo stoixeia: to prwto einai string kai to deutero einai eite lista ths idias morfhs 'h None. (Opws kai h cherry_field sto swma ths synarthshs pick_cherries_onebyone()). Epistrefei nea lista pou periexei ola ta string pou briskontai sti field, xwris omws na periexontai se fwliasmenes listes. Paradeigmata: >>> cherry_field = ['cherry1', ['cherry2', ['cherry3', ['cherry4', ['last cherry', None]]]]] >>> flatten(cherry_field) ['cherry1', 'cherry2', 'cherry3', 'cherry4', 'last cherry'] >>> flatten(['Hello', ['world', None]]) ['Hello', 'world'] >>> flatten(['Lone cherry', None]) ['Lone cherry'] """ ls = field if ls[1] is None: return [ls[0]] n_ls = [ls[0]] return n_ls + flatten(ls[1]) def cherry_string(field): """String me ola ta string pou periexoun 'cherry' sti field. field -- lista me fwliasmena string. Ka8e lista exei dyo stoixeia: to prwto einai string kai to deutero einai eite lista ths idias morfhs 'h None. (Opws kai h cherry_field sto swma ths synarthshs pick_cherries_onebyone()). Epistrefei string pou exei proel8ei apo synenwsh olwn twn string pou periexontai sti field kai periexoun th le3h 'cherry'. Paradeigmata: >>> cherry_field = ['cherry1', ['cherry2', ['cherry3', ['cherry4', ['last cherry', None]]]]] >>> cherry_string(cherry_field) 'cherry1cherry2cherry3cherry4last cherry' >>> cherry_string(['Hello', ['cherry', None]]) 'cherry' >>> cherry_string(['Hello', ['first cherry', ['world', ['last cherry', None]]]]) 'first cherrylast cherry' """ """ SYMPLHRWSTE TA KENA APO KATW.""" from functools import reduce from operator import ________ return reduce(_________, __________________] Μου ζητάει να φτιάξω την cherry_string(field), συμπληρώνοντας ΜΟΝΟ τα 3 κενά(χωρίς να παραλείψω κάποια από τις ήδη υπάρχουσες εντολές).. Δεν ξέρω τί άλλο να κάνω, το άφησα εδώ.. def cherry_string(field): from functools import reduce from operator import add return reduce(add, [flatten(field)[x] for x in flatten(field) if 'cherry' in flatten(field)[x]] Ευχαριστώ για το χρόνο που αφιερώνετε :) ΥΓ: Η def cherry_string(field): from functools import reduce from operator import add return reduce(add, flatten(field)] #.....................λειτουργούσε χωρίς να ξεχωρίζει το περιεχόμενο της λίστας..
xristos97 Δημοσ. 21 Δεκεμβρίου 2019 Δημοσ. 21 Δεκεμβρίου 2019 Η πρωτη προσπαθεια σου θελει μονο να αφαιρεθουν καποια πραγματακια. Αυτην εννοω: return reduce(add, [flatten(field)[x] for x in flatten(field) if 'cherry' in flatten(field)[x]]) Ψαξε λιγο στο SO και θα το βρεις. Δεν ασχολουμαι και πολυ με python και σε 20 λεπτα με λιγο ψαξιμο το βρηκα. 1
k33theod Δημοσ. 21 Δεκεμβρίου 2019 Δημοσ. 21 Δεκεμβρίου 2019 (επεξεργασμένο) Αφού έχεις έτοιμη τη flatten που είναι το δύσκολο κομμάτι της υπόθεσης θα την χρησιμοποιήσεις για να πάρεις την αρχική συνολική λίστα και από αυτή με list comprehension https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions θα πάρεις τη λίστα που έχει μόνο "cherries", στην οποία θα εφαρμόσεις την add. >>> def flatten(field): ls = field if ls[1] is None: return [ls[0]] n_ls = [ls[0]] return n_ls + flatten(ls[1]) >>> cherry_field = ['cherry1', ['cherry2', ['cherry3', ['cherry4', ['last cherry', None]]]]] >>> a=['Hello', ['cherry', None]] >>> b=['Hello', ['first cherry', ['world', ['last cherry', None]]]] >>> [cherry for cherry in flatten(cherry_field) if "cherry" in cherry] ['cherry1', 'cherry2', 'cherry3', 'cherry4', 'last cherry'] >>> [cherry for cherry in flatten(a) if "cherry" in cherry] ['cherry'] >>> [cherry for cherry in flatten(b) if "cherry" in cherry] ['first cherry', 'last cherry'] >>> Επεξ/σία 21 Δεκεμβρίου 2019 από k33theod 1
rxv_chicken_io Δημοσ. 22 Δεκεμβρίου 2019 Δημοσ. 22 Δεκεμβρίου 2019 Δεν εχω προσβαση σε pc αυτη την στιγμη για να δοκιμασω αλλα η λυση που εδωσες εσυ ο ιδιος ηταν πολυ κοντα. Αντι για την add ομως βαλε την concat και θα εισαι ενταξει. Αν θες να εισαι και πιο σωστος μπορεις να βαλεις και σαν initialValue στην reduce το ουδετερο στοιχειο της συναθροισης Αλφαριθμητικων δηλαδη το "" 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα