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

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

Δημοσ.

Γεια σας,

έχω μια άσκηση στην 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].

τι πρέπει να κάνω ?(1234).png.72cc0141c36b5955f6a17a4889f9365e.png

Δημοσ.

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

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

[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
Δημοσ.
2 ώρες πριν, archer100 είπε

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

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

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

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

  • Like 1
Δημοσ.
9 ώρες πριν, 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
Δημοσ.
2 λεπτά πριν, billsowngame είπε

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

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

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

  • Like 1
Δημοσ.
16 ώρες πριν, archer100 είπε

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

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

  • Thanks 1
Επισκέπτης
Δημοσ. (επεξεργασμένο)
Στις 5/3/2023 στις 10: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
Δημοσ.
4 ώρες πριν, Orestis_G είπε

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

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

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

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

Επισκέπτης
Δημοσ.
4 λεπτά πριν, SOADNICK είπε

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

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

Επισκέπτης
Δημοσ.
Μόλις τώρα, archer100 είπε

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

mylist01=[num%2 for num in mylist]

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

Δημοσ.
1 λεπτό πριν, archer100 είπε

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

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

Δημοσ.
Μόλις τώρα, SOADNICK είπε

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

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

Δημοσ.
1 λεπτό πριν, archer100 είπε

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

Πάντως και το ανάποδο μπορεί να γίνει και χωρίς if, με το 1 - num % 2

  • Like 1

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

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

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

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

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

Σύνδεση

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

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