Python: ποια είναι η διαφορά μεταξύ (1,2,3) και [1,2,3], και πότε πρέπει να χρησιμοποιήσετε το καθένα;

ψήφοι
44

Σε πολλά μέρη, (1,2,3)και [1,2,3]μπορούν να χρησιμοποιηθούν εναλλακτικά.

Πότε πρέπει να χρησιμοποιώ το ένα ή το άλλο, και γιατί;

Δημοσιεύθηκε 05/08/2008 στις 08:18
πηγή χρήστη
Σε άλλες γλώσσες...                            


14 απαντήσεις

ψήφοι
31

Από την Python Συχνές ερωτήσεις :

Λίστες και πλειάδες, ενώ παρόμοια από πολλές απόψεις, χρησιμοποιούνται γενικά σε ριζικά διαφορετικούς τρόπους. Πλειάδες μπορεί να θεωρηθεί ως παρόμοια με τα αρχεία Pascal ή C Δομές? ότι είναι μικρές συλλογές των σχετικών δεδομένων που μπορεί να είναι διαφόρων τύπων τα οποία λειτουργούν ως ομάδα. Για παράδειγμα, ένας Καρτεσιανών συντεταγμένων είναι κατάλληλα παριστάνεται ως μια πλειάδα από δύο ή τρεις αριθμούς.

Λίστες, από την άλλη πλευρά, είναι περισσότερο σαν πίνακες σε άλλες γλώσσες. Έχουν την τάση να κρατήσει ένα διαφορετικό αριθμό αντικειμένων τα οποία έχουν τον ίδιο τύπο και τα οποία λειτουργούν σε ένα-ένα.

Σε γενικές γραμμές, κατά συνθήκη, δεν θα επέλεγε μια λίστα ή μια πλειάδα μόνο με βάση την (im) μεταβλητότητα της. Θα επιλέξετε μια πλειάδα μικρών συλλογές εντελώς διαφορετικά κομμάτια των δεδομένων στην οποία ένα πλήρως ανεπτυγμένο κατηγορία θα ήταν πάρα πολύ βαρύ, και μια λίστα για τις συλλογές του κάθε λογικού μεγέθους, όπου έχετε ένα ομοιογενές σύνολο των δεδομένων.

Απαντήθηκε 05/08/2008 στις 14:22
πηγή χρήστη

ψήφοι
19

Ο κατάλογος [1,2,3] είναι δυναμική και ευέλικτη, αλλά ότι η ευελιξία έρχεται με ένα κόστος ταχύτητα.

Η πλειάδα (1,2,3) στερεώνεται (αμετάβλητος) και συνεπώς ταχύτερη.

Απαντήθηκε 05/08/2008 στις 08:27
πηγή χρήστη

ψήφοι
11

Πλειάδες είναι ένας γρήγορος \ ευέλικτος τρόπος για τη δημιουργία σύνθετων δεδομένων τύπους. Οι λίστες είναι δοχεία για την, επίσης, τους καταλόγους των αντικειμένων.

Για παράδειγμα, μπορείτε να χρησιμοποιήσετε μια λίστα για να αποθηκεύσετε μια λίστα με τα στοιχεία μαθητή σε μια τάξη.

Κάθε λεπτομέρεια φοιτητής στον κατάλογο αυτό μπορεί να είναι ένα 3-πλειάδα περιέχει τον αριθμό ρολό, το όνομά τους και το σκορ δοκιμή.

`[(1,'Mark',86),(2,'John',34)...]`

Επίσης, επειδή πλειάδες είναι αμετάβλητοι μπορούν να χρησιμοποιηθούν ως πλήκτρα στα λεξικά.

Απαντήθηκε 07/08/2008 στις 12:21
πηγή χρήστη

ψήφοι
7

Η έννοια των πλειάδων είναι ιδιαίτερα εκφραστική:

  • Ρεαλιστικά, είναι μεγάλη για τη συσκευασία και την αποσυσκευασία τιμές ( x,y=coord).

  • Σε συνδυασμό με λεξικά (πίνακες κατακερματισμού), επιτρέπουν μορφές χαρτογράφησης που διαφορετικά θα απαιτούσαν πολλά επίπεδα του συνεταιρίζεσθαι. Για παράδειγμα, έστω ότι σήμανση (x, y) έχει βρεθεί.

    // PHP
    if (!isset($found[$x])) {
        $found[$x] = Array();
        $found[$x][$y] = true;
    } else if (!isset($found[$x][$y])) {
        $found[$x][$y] = true;
    }
    
    # Python
    found[(x,y)] = True # parens added for clarity
    
  • Λίστες θα πρέπει να χρησιμοποιείται με την προσδοκία των εργασιών σχετικά με το περιεχόμενό της (εξ ου και οι διάφορες αναφορές αμετάβλητο). Ένας εξ αυτών θα θέλουν να σκάσει, ώθηση, συρραφής, φέτα, αναζήτηση, εισάγετε πριν, τοποθετήστε μετά, κλπ με μια λίστα.

  • Πλειάδες θα πρέπει να είναι μια αναπαράσταση χαμηλού επιπέδου ενός αντικειμένου, όπου οι απλές συγκρίσεις γίνονται, ή εργασίες όπως εκχύλιση του-οστό στοιχείο ή n στοιχεία σε ένα προβλέψιμο τρόπο, όπως οι συντεταγμένες παράδειγμα που δόθηκε προηγουμένως.

  • Τέλος, οι λίστες δεν είναι hashable, τόσο το είδος της χαρτογράφησης γίνεται με λεξικά (πίνακες κατακερματισμού σε Perl, πίνακας συσχέτισης σε PHP) θα πρέπει να γίνει με πλειάδες.

    Εδώ είναι ένα απλό παράδειγμα των πλειάδων και λεξικών, μαζί επιτέλους:

    """
    couple is a tuple of two people
    doesLike is a dictionary mapping couples to True or False
    """
    couple = "john", "jane"
    doesLike = dict()
    doesLike[couple] = True
    doesLike["jane", "john"] = False # unrequited love :'(
    
Απαντήθηκε 15/08/2008 στις 19:00
πηγή χρήστη

ψήφοι
4

[1, 2, 3]είναι μια λίστα στην οποία μπορεί κανείς να προσθέσετε ή να διαγράψετε στοιχεία.
(1, 2, 3)Είναι μια πλειάδα στην οποία μία φορά ορίζεται, η τροποποίηση δεν μπορεί να γίνει.

Απαντήθηκε 25/06/2011 στις 12:14
πηγή χρήστη

ψήφοι
3

Κάθε φορά που πρέπει να περάσει σε μια συλλογή αντικειμένων σε λειτουργία, αν θέλω τη λειτουργία να μην αλλάξει τις τιμές που ψηφίστηκε το - μπορώ να χρησιμοποιήσω πλειάδες.

Αλλιώς αν θέλετε να έχετε τη λειτουργία για να αλλάξει τις τιμές, εγώ λίστα χρήση.

Πάντα εάν χρησιμοποιείτε εξωτερικές βιβλιοθήκες και πρέπει να περάσει σε μια λίστα τιμών σε μια λειτουργία και δεν είναι σίγουροι για την ακεραιότητα των δεδομένων, χρησιμοποιήστε μια πλειάδα.

Απαντήθηκε 15/08/2008 στις 17:38
πηγή χρήστη

ψήφοι
2
  • Μια πλειάδα μπορεί να αντιπροσωπεύει ένα κλειδί στο λεξικό, επειδή είναι αμετάβλητο.
  • Χρησιμοποιήστε τις λίστες, αν έχετε μια συλλογή των δεδομένων που δεν χρειάζεται τυχαίας προσπέλασης.
Απαντήθηκε 20/05/2017 στις 07:30
πηγή χρήστη

ψήφοι
2

ανοίξτε μια κονσόλα και να τρέξει python. Δοκιμάστε αυτό:

  >>> list = [1, 2, 3]     
  >>> dir(list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli
    ce__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit
    em__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
     '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__r
    educe__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__'
    , '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 
'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Όπως μπορείτε να δείτε το τελευταίο στην λίστα των πιο πρόσφατων γραμμή έχουν τις ακόλουθες μεθόδους: «προσάρτησης», «μέτρηση», «επέκταση», «δείκτης», «ένθετο», «ποπ», «αφαίρεση», «αντίστροφη», «είδος »

Τώρα δοκιμάστε το ίδιο για πλειάδα:

>>> tuple = (1, 2, 3)
>>> dir(tuple)
    ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__
    format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get
    slice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__
    lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__'
    , '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

Μόνο «μετράνε» και «δείκτη» από τις μεθόδους λίστα εμφανίζεται εδώ.

Αυτό οφείλεται στο γεγονός ότι πλειάδες είναι αμετάβλητο και δεν υποστηρίζουν οποιεσδήποτε τροποποιήσεις. Αντ 'αυτού είναι απλούστερη και ταχύτερη στην εσωτερική εφαρμογή.

Απαντήθηκε 10/10/2015 στις 19:30
πηγή χρήστη

ψήφοι
2

Όπως άλλοι έχουν αναφερθεί, λίστες και οι πλειάδες και οι δύο δοχεία τα οποία μπορούν να χρησιμοποιηθούν για την αποθήκευση αντικειμένων python. Οι λίστες είναι επεκτάσιμη και το περιεχόμενό τους μπορεί να αλλάξει με την ανάθεση, από την άλλη πλευρά πλειάδες είναι αμετάβλητοι.

Επίσης, οι λίστες δεν μπορούν να χρησιμοποιηθούν ως πλήκτρα σε ένα λεξικό, ενώ πλειάδες μπορεί.

Απαντήθηκε 08/08/2008 στις 07:06
πηγή χρήστη

ψήφοι
1

(1,2,3) και [1,2,3] μπορούν να χρησιμοποιηθούν εναλλακτικά σε σπάνιες συνθήκες.

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

[1,2,3] είναι ένας κατάλογος και τα στοιχεία μπορούν να προσαρτηθούν και να αφαιρεθούν.

Λίστα έχει περισσότερες δυνατότητες από μια πλειάδα.

Απαντήθηκε 31/03/2018 στις 09:14
πηγή χρήστη

ψήφοι
1

[1,2,3] είναι μια λίστα.

(1,2,3) είναι μια πλειάδα και αμετάβλητη.

Απαντήθηκε 08/10/2014 στις 07:02
πηγή χρήστη

ψήφοι
1

Εάν μπορείτε να βρείτε μια λύση που να λειτουργεί με πλειάδες, τα χρησιμοποιούν, δεδομένου ότι αναγκάζει αμετάβλητο τι είδους κινήσεις σας κάτω από μια πιο λειτουργική πορεία. Σχεδόν ποτέ δεν μετανιώνω πηγαίνει κάτω από το λειτουργικό / αμετάβλητη πορεία.

Απαντήθηκε 08/08/2008 στις 07:48
πηγή χρήστη

ψήφοι
0

(1,2,3)Είναι μια πλειάδα και [1,2,3]είναι μια λίστα. Μπορείτε είτε από τα δύο αντιπροσωπεύουν ακολουθίες αριθμών, αλλά σημειώστε ότι πλειάδες είναι αμετάβλητος και ο κατάλογος είναι ευμετάβλητος αντικείμενα Python.

Απαντήθηκε 27/06/2016 στις 20:48
πηγή χρήστη

ψήφοι
0

(1,2,3)Είναι μια πλειάδα ενώ [1,2,3]είναι μια λίστα. Μια πλειάδα είναι ένα αμετάβλητο αντικείμενο, ενώ μια λίστα είναι ευμετάβλητος.

Απαντήθηκε 19/02/2016 στις 02:15
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more