Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας,

έχω μια άσκηση στην Pyhton που έχει να κάνει με τις λίστες .

α) Στο πρώτο ερώτημα που λέει να βρώ μια λίστα με την την τεχνική list comprehension που να έχει σαν στοιχεία της τα πολλαπλάσια του x από την τιμή 1 μέχρι και την τιμή y.

β) Βρίσκω αυτή τη λίστα και μετά μου ζητάει να του βρω μία άλλη λίστα η οποία σε κάθε θέση της έχει την τιμή 0 ή 1 ανάλογα αν το αντίστοιχο στοιχείο της mylist (δηλ. αυτό που βρίσκεται στην αντίστοιχη θέση) είναι άρτιος ή περιττός αριθμός (0 για άρτιο ή 1 για περιττό αριθμό).Δηλαδή αν στο πρώτο ερώτημα βάλω τις τιμές x=3 και y=5 τότε η λίστα έχει τη μορφή: [3, 6, 9, 12, 15] και στο β)  ερώτημα θα πρέπει να είναι της μορφής [1, 0, 1, 0, 1].

Δημοσ.

Παροτι δεν ειναι σωστο να δινονται λυσεις σε ασκησεις εκ του μηδενος, θα σου απαντησω επειδη εχεις κανει ηδη τη μιση (η οποια λυση σου ειναι μια χαρα).

Ο πιο απλος τροπος ειναι αυτος:

[0 if i%2==0 else 1 for i in mylist]

και μια εναλλακτικη:

[(not i%2==0)*1 for i in mylist]

αποτελεσμα και των 2 ειναι [1, 0, 1, 0, 1]

  • Like 1
Δημοσ.
  Στις 4/3/2023 στις 6:09 ΜΜ, archer100 είπε

και μια εναλλακτικη:

[(not i%2==0)*1 for i in mylist]

αποτελεσμα και των 2 ειναι [1, 0, 1, 0, 1]

Νομίζω απλούστερη εναλλακτική είναι το i & 1

  • Like 1
Δημοσ.
  Στις 4/3/2023 στις 8:24 ΜΜ, SOADNICK είπε

Νομίζω απλούστερη εναλλακτική είναι το i & 1

Ωραιος. To & το ηξερα ως AND, πως ακριβως δουλευει με τη λογικη αρτιων-περιττων;

Δημοσ.

Σας ευχαριστώ για τις απαντήσεις σας σκέφτηκα αυτό είναι λάθος ?

mylist01 = []
for num in mylist:
   if num % 2 == 0:
       mylist01.append(0)
   else:
       mylist01.append(1)
print(mylist01)

  • Like 1
Δημοσ.
  Στις 5/3/2023 στις 8:30 ΠΜ, billsowngame είπε

Σας ευχαριστώ για τις απαντήσεις σας σκέφτηκα αυτό είναι λάθος ?

mylist01 = []
for num in mylist:
   if num % 2 == 0:
       mylist01.append(0)
   else:
       mylist01.append(1)
print(mylist01)

Επέκταση  

Μια χαρα ειναι. 

  • Like 1
Δημοσ.
  Στις 5/3/2023 στις 5:29 ΠΜ, archer100 είπε

Ωραιος. To & το ηξερα ως AND, πως ακριβως δουλευει με τη λογικη αρτιων-περιττων;

Λόγω της αναπαράστασης στο δυαδικό οι άρτιοι έχουν δεξιότερο bit (lsb) 0 ενώ οι περιττοί 1 πχ το 12 είναι 1100 ενώ το 13 1101 άρα το & 1 (0001) θα δώσει 0000 και 0001 αντίστοιχα.

  • Thanks 1
Επισκέπτης
Δημοσ. (επεξεργασμένο)
  Στις 5/3/2023 στις 8:30 ΠΜ, billsowngame είπε

Σας ευχαριστώ για τις απαντήσεις σας σκέφτηκα αυτό είναι λάθος ?

mylist01 = []
for num in mylist:
   if num % 2 == 0:
       mylist01.append(0)
   else:
       mylist01.append(1)
print(mylist01)

Επέκταση  

Πάντως δεδομένου ότι γράφεις python, ίσως μια καλή ιδέα θα ήταν να προπονηθείς και με τα list comprehensions. Ας πούμε ο κώδικάς σου γίνεται:

mylist01 = [ 1 if num%2 else 0 for num in mylist]

(εδώ δεν χρειάζομαι το ==0 και πατάω στο γεγονός ότι αριθμητικές τιμές διάφορες του 0 δίνουν αποτέλεσμα True στο if)

Επεξ/σία από Orestis_G
Δημοσ.
  Στις 7/3/2023 στις 10:27 ΠΜ, Orestis_G είπε

Πάντως δεδομένου ότι γράφεις python, ίσως μια καλή ιδέα θα ήταν να προπονηθείς και με τα list comprehensions. Ας πούμε ο κώδικάς σου γίνεται:

mylist01 = [ 1 if num%2 else 0 for num in mylist]

(εδώ δεν χρειάζομαι το ==0 και πατάω στο γεγονός ότι αριθμητικές τιμές διάφορες του 0 δίνουν αποτέλεσμα True στο if)

Ούτε το if χρειάζεται βασικά, αρκεί το num % 2

Επισκέπτης
Δημοσ.
  Στις 7/3/2023 στις 2:47 ΜΜ, SOADNICK είπε

Ούτε το if χρειάζεται βασικά, αρκεί το num % 2

Ναι, σωστός, το μόνο υπόλοιπο που μπορεί να έχει ακέραιος/2 είναι το 1... :)

Επισκέπτης
Δημοσ.
  Στις 7/3/2023 στις 2:53 ΜΜ, archer100 είπε

To num%2 σκετο δινει 0 ενω η ασκηση ζηταει 1

mylist01=[num%2 for num in mylist]

Σωστό αποτέλεσμα δίνει

Δημοσ.
  Στις 7/3/2023 στις 2:53 ΜΜ, archer100 είπε

To num%2 σκετο δινει 0 ενω η ασκηση ζηταει 1

0 ή 1 ανάλογα αν το αντίστοιχο στοιχείο της mylist (δηλ. αυτό που βρίσκεται στην αντίστοιχη θέση) είναι άρτιος ή περιττός αριθμός (0 για άρτιο ή 1 για περιττό αριθμό).

Δημοσ.
  Στις 7/3/2023 στις 2:55 ΜΜ, SOADNICK είπε

0 ή 1 ανάλογα αν το αντίστοιχο στοιχείο της mylist (δηλ. αυτό που βρίσκεται στην αντίστοιχη θέση) είναι άρτιος ή περιττός αριθμός (0 για άρτιο ή 1 για περιττό αριθμό).

Ναι, λαθος μου, νομιζα ζητουσε το αναποδο

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...