Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος)

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 10 Μήνες πριν #4095

  • SEXYUNGLYGUY
  • Το Άβαταρ του/της SEXYUNGLYGUY
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 1
Γράψτε ένα πρόγραμμα το οποίο αφαιρεί όλα τα θαυμαστικά εκτός από αυτά τα οποία βρίσκονται ΜΟΝΟ στο τέλος της πρότασης.
Γράψτε ένα πρόγραμμα το οποίο παίρνει σαν είσοδο μία ακολουθία παρενθέσεων και επιστρέφει True/False αν αυτή η ακολουθία μπορεί να υπάρχει σε μία μαθηματική παράσταση
Γράψτε ένα πρόγραμμα το οποίο παίρνει σαν είσοδο μία λίστα και επιστρέφει την τυπική απόκλιση των τιμών χωρίς να χρησιμοποιεί τις δύο μεγαλύτερες και δύο μικρότερες τιμές
Γράψτε ένα πρόγραμμα το οποίο χρησιμοποιεί το www.brewerydb.com/ και παίρνει από έναν χρήστη σαν είσοδο κάποιες λέξεις κλειδιά χωρισμένες με κόμμα. Χρησιμοποιώντας τις λέξεις κλειδιά ανατρέξτε τις μπύρες για να βρείτε σε ποιας μπύρας από όλες την περιγραφή εμφανίζονται περισσότερες φορές οι λέξεις κλειδιά.
οποιος ξερει ας με βοηθησει ..ευχαριστω!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 10 Μήνες πριν #4098

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
SEXYUNGLYGUY έγραψε:
Γράψτε ένα πρόγραμμα το οποίο αφαιρεί όλα τα θαυμαστικά εκτός από αυτά τα οποία βρίσκονται ΜΟΝΟ στο τέλος της πρότασης.

Θα κάνεις ένα πρόγραμμα το οποίο θα κάνει τα εξής:

1) Θα διαβάζει μία συμβολοσειρά(string) από το πληκτρολόγιο ή από ένα αρχείο.

2) Θα μετατρέψεις αυτήν την συμβολοσειρά σε μια λίστα από χαρακτήρες
χρησιμοποιώντας την συνάρτηση list().

3) Θα "σκανάρεις" την λίστα χρησιμοποιώντας ένα for loop και κάθε φορά θα ελέγχεις
τον εκάστοτε χαρακτήρα εάν είναι το θαυμαστικό '!' . Εάν είναι το θαυμαστικό και ο επόμενος χαρακτήρας δεν είναι κεφαλαίο γράμμα(Δηλαδή η πρόταση δεν τελείωσε ακόμα) τότε μπορείς να τον αφαιρέσεις, διαφορετικά δεν κάνεις τίποτα.



SEXYUNGLYGUY έγραψε:
Γράψτε ένα πρόγραμμα το οποίο παίρνει σαν είσοδο μία ακολουθία παρενθέσεων και επιστρέφει True/False αν αυτή η ακολουθία μπορεί να υπάρχει σε μία μαθηματική παράσταση

Θα κάνεις τα εξής:

1) Θα παίρνεις ως είσοδο μια συμβολοσειρά που περιέχει παρενθέσεις.

2) Θα μετατρέψεις την συμβολοσειρά σε μία λίστα χαρακτήρων χρησιμοποιώντας την συνάρτηση list().

4) Προσπέλασε όλη την λίστα και μέτρα πόσες ανοιχτές παρενθέσεις '(' και πόσες κλειστές ')' έχεις. Εάν ο αριθμός τον ανοιχτών είναι ίδιος με τον κλειστών τότε είναι επιτυχές διαφορετικά η μαθηματική πρόταση δεν είναι σωστή.


SEXYUNGLYGUY έγραψε:
Γράψτε ένα πρόγραμμα το οποίο παίρνει σαν είσοδο μία λίστα και επιστρέφει την τυπική απόκλιση των τιμών χωρίς να χρησιμοποιεί τις δύο μεγαλύτερες και δύο μικρότερες τιμές

Εάν ξέρεις μαθηματικά αυτό είναι εύκολο.

Ο τύπος της τυπικής απόκλισης είναι:

s' = τετραγωνική_ρίζα( s^2 )

όπου s^2 = 1/n * άθροισμα_από_1_έως_n( (xi - xi_μέσο) ^ 2 ) όπου n ο αριθμός όλων τον τιμών (στην περίπτωσή σου το μέγεθος της λίστας).

Άρα θα κάνεις τα εξής:

1) Θα πάρεις ως είσοδο μία λίστα.

2) Θα κάνεις ένα for loop για να προσπελάσεις όλα τα στοιχεία της λίστας και να
υπολογίσεις το παραπάνω άθροισμα. Για εσένα το εκάστοτε xi είναι το myList[.i] όπου
myList είναι η λίστα με τις τιμές και i είναι η εκάστοτε τιμή από το for loop. Δεν
θυμάμαι πως υπολογίζετε το x_μέσο αλλά λογικά εσύ θα ξέρεις, έχει χρόνια που έκανα μαθηματικά στατιστικής.

3) Μόλις υπολογίσεις το άθροισμα, για να βρεις την τυπική απόκλιση απλός υπολογίζεις την τετραγωνική ρίζα του και είσαι έτοιμος. Στην python μπορείς να κάνεις import math και να χρησιμοποιήσεις την μέθοδο math.sqrt() για να υπολογίσεις τετραγωνικές ρίζες.

SEXYUNGLYGUY έγραψε:
Γράψτε ένα πρόγραμμα το οποίο χρησιμοποιεί το www.brewerydb.com/ και παίρνει από έναν χρήστη σαν είσοδο κάποιες λέξεις κλειδιά χωρισμένες με κόμμα. Χρησιμοποιώντας τις λέξεις κλειδιά ανατρέξτε τις μπύρες για να βρείτε σε ποιας μπύρας από όλες την περιγραφή εμφανίζονται περισσότερες φορές οι λέξεις κλειδιά.

Για αυτό δεν γνωρίζω.

Μπορώ να σε δείξω και κώδικες αλλά θα είναι σαν να σου λύνω εγώ τις ασκήσεις και να πηγαίνεις έτοιμος. Οτιδήποτε απορία έχεις μην διστάσεις να ρωτήσεις.
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": SEXYUNGLYGUY

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 10 Μήνες πριν #4112

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Το θέμα με τις παρενθέσεις επειδή το έχω συναντήσει είναι λίγο πιο περίπλοκο
Βασικά αν είναι μόνο παρενθέσεις ίσως να λύνεται και έτσι με λίγο όμως προσοχή γιατί
a=')()('
 
ίδιες ανοιχτές ίδιες κλειστές αλλά ..
και το θέμα περιπλέκεται ακόμα πιο πολύ όταν άλλα σύμβολα έρθουν αγγύλες άγγιστρα
a='({])}['
To σωστό αλγοριθμηκά είναι
όπως διαβάζεις την αριθμητική παράσταση
όταν συναντήσεις άνοιγμα το βάζεις σε μια στοίβα
όταν συναντήσεις κλείσιμο και εφόσον ταιρίαζει με το άνοιγμα στην κορυφή της στοίβας κάνεις
pop στη στοίβα.
Η στοίβα στο τέλος πρέπει να είναι άδεια
Τελευταία διόρθωση: 7 Χρόνια 10 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 10 Μήνες πριν #4114

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Theo έγραψε:
Το θέμα με τις παρενθέσεις επειδή το έχω συναντήσει είναι λίγο πιο περίπλοκο
Βασικά αν είναι μόνο παρενθέσεις ίσως να λύνεται και έτσι με λίγο όμως προσοχή γιατί
a=')()('
 
ίδιες ανοιχτές ίδιες κλειστές αλλά ..
και το θέμα περιπλέκεται ακόμα πιο πολύ όταν άλλα σύμβολα έρθουν αγγύλες άγγιστρα
a='({])}['

Όντως, αλλά εγώ θεώρησα ένα απλό πρόβλημα το οποίο θα παίρνει συγκεκριμένο input.

Διαφορετικά ο ποιο περίπλοκος και σωστός τρόπος είναι με την χρήση μιας στοίβας. Κάνεις push όλους τους χαρακτήρες μέσα σε μια στοίβα και μετά κάνεις συνέχεια pop μέχρι να αδειάσει η στοίβα.

 
correct = ['(', '(', ')', ')']
wrong   = [')', '(', ')', '(']
 
 
def check_mathematical_order(myList):
 
    opened = 0
    closed = 0
    change_shifts = False
 
    while len(myList) > 0:
 
        poped_item = myList.pop()
 
        if poped_item  == ')' and not change_shifts:
            closed += 1
 
        elif poped_item  == ')' and change_shifts:
            return False
 
        elif poped_item  == '(':
            change_shifts = True
            opened += 1
 
 
    return opened == closed
 
 
print( check_mathematical_order(correct) )
print( check_mathematical_order(wrong) )
 

Έξοδος:
True
False

Και αν μπλέξεις και πράξεις ακόμα ποιο περίπλοκο.
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 10 Μήνες πριν #4117

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Αυτό που λες εσύ είναι καλύτερο (δεν το είδα πριν).
Αλλά το θέμα είναι να ξέρεις στοίβες.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 8 Μήνες πριν #4265

  • Ceres Dea
  • Το Άβαταρ του/της Ceres Dea
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
babaliaris1 έγραψε:
Theo έγραψε:
Το θέμα με τις παρενθέσεις επειδή το έχω συναντήσει είναι λίγο πιο περίπλοκο
Βασικά αν είναι μόνο παρενθέσεις ίσως να λύνεται και έτσι με λίγο όμως προσοχή γιατί
a=')()('
 
ίδιες ανοιχτές ίδιες κλειστές αλλά ..
και το θέμα περιπλέκεται ακόμα πιο πολύ όταν άλλα σύμβολα έρθουν αγγύλες άγγιστρα
a='({])}['

Όντως, αλλά εγώ θεώρησα ένα απλό πρόβλημα το οποίο θα παίρνει συγκεκριμένο input.

Διαφορετικά ο ποιο περίπλοκος και σωστός τρόπος είναι με την χρήση μιας στοίβας. Κάνεις push όλους τους χαρακτήρες μέσα σε μια στοίβα και μετά κάνεις συνέχεια pop μέχρι να αδειάσει η στοίβα.
 
correct = ['(', '(', ')', ')']
wrong   = [')', '(', ')', '(']
 
 
def check_mathematical_order(myList):
 
    opened = 0
    closed = 0
    change_shifts = False
 
    while len(myList) > 0:
 
        poped_item = myList.pop()
 
        if poped_item  == ')' and not change_shifts:
            closed += 1
 
        elif poped_item  == ')' and change_shifts:
            return False
 
        elif poped_item  == '(':
            change_shifts = True
            opened += 1
 
 
    return opened == closed
 
 
print( check_mathematical_order(correct) )
print( check_mathematical_order(wrong) )
 

Έξοδος:
True
False

Και αν μπλέξεις και πράξεις ακόμα ποιο περίπλοκο.
Θα μπορουσες να εξηγήσεις τι ακριβώς κάνεις με την μεταβλητή change_shifts σν σου είναι εύκολο;;;Σε ευχαριστώ
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 8 Μήνες πριν #4266

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Ceres Dea έγραψε:
babaliaris1 έγραψε:
Theo έγραψε:
Το θέμα με τις παρενθέσεις επειδή το έχω συναντήσει είναι λίγο πιο περίπλοκο
Βασικά αν είναι μόνο παρενθέσεις ίσως να λύνεται και έτσι με λίγο όμως προσοχή γιατί
a=')()('
 
ίδιες ανοιχτές ίδιες κλειστές αλλά ..
και το θέμα περιπλέκεται ακόμα πιο πολύ όταν άλλα σύμβολα έρθουν αγγύλες άγγιστρα
a='({])}['

Όντως, αλλά εγώ θεώρησα ένα απλό πρόβλημα το οποίο θα παίρνει συγκεκριμένο input.

Διαφορετικά ο ποιο περίπλοκος και σωστός τρόπος είναι με την χρήση μιας στοίβας. Κάνεις push όλους τους χαρακτήρες μέσα σε μια στοίβα και μετά κάνεις συνέχεια pop μέχρι να αδειάσει η στοίβα.
 
correct = ['(', '(', ')', ')']
wrong   = [')', '(', ')', '(']
 
 
def check_mathematical_order(myList):
 
    opened = 0
    closed = 0
    change_shifts = False
 
    while len(myList) > 0:
 
        poped_item = myList.pop()
 
        if poped_item  == ')' and not change_shifts:
            closed += 1
 
        elif poped_item  == ')' and change_shifts:
            return False
 
        elif poped_item  == '(':
            change_shifts = True
            opened += 1
 
 
    return opened == closed
 
 
print( check_mathematical_order(correct) )
print( check_mathematical_order(wrong) )
 

Έξοδος:
True
False

Και αν μπλέξεις και πράξεις ακόμα ποιο περίπλοκο.
Θα μπορουσες να εξηγήσεις τι ακριβώς κάνεις με την μεταβλητή change_shifts σν σου είναι εύκολο;;;Σε ευχαριστώ

Ξέχνα το. Αυτός ο αλγόριθμος είναι κάτι πρόχειρο που σκέφτηκα και δεν αξίζει τον κόπο να τον μάθεις.
Υπάρχει ήδη έναν διαδεδομένος αλγόριθμος πολύ καλύτερος για αυτήν την δουλειά. Και συγνώμη δικό μου λάθος δεν έπρεπε καν να δείξω κάτι τέτοιο.

Λοιπόν ο σωστός τρόπος είναι ο εξής:

Θα φτιάξεις μία απλή στοίβα. Στην python η δομή list λειτουργεί και σαν στοίβα απλός χρησιμοποιόντας τις μεθόδους append() για να βάλεις ένα στοιχείο μέσα στην στοίβα και pop() για να βγάλεις ένα στοιχείο.

Κάθε φορά που συναντάς μια ανοικτή παρένθεση θα την κάνεις push μέσα στην στοίβα σου.Ενώ κάθε φορά που συναντάς μία κλειστή παρένθεση θα κάνεις ένα pop() από την στοίβα σου και θα βλέπει αν το στοιχείο που έκανες pop() είναι αντίστοιχα μια ανοιχτή παρένθεση. Αν ναι συνεχίζεις διαφορετικά ο χρήστης έδωσε λάθος έκφραση. Αυτήν την διαδικασία που σου περιέγραψα την κάνεις μέσα σε ένα loop μέχρι η στοίβα σου να γίνει άδεια.

Δηλαδή αυτό που είπε οTheo έγραψε:
To σωστό αλγοριθμηκά είναι
όπως διαβάζεις την αριθμητική παράσταση
όταν συναντήσεις άνοιγμα το βάζεις σε μια στοίβα
όταν συναντήσεις κλείσιμο και εφόσον ταιρίαζει με το άνοιγμα στην κορυφή της στοίβας κάνεις
pop στη στοίβα.
Η στοίβα στο τέλος πρέπει να είναι άδεια

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

Άμα θέλεις μπορώ να σου δώσω και κώδικα αλλά καλό είναι να το προσπαθήσεις. Δεν είναι πολύ δύσκολο.
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 8 Μήνες πριν #4267

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Για το πρόβλημα με τις παρενθέσεις έγραψα μία συνάρτηση. Σχόλια ή προτάσεις βελτίωσης :) θα χαιρόμουν
>>> def check_balance(a):
	stack=[]#η στοίβα
	opens='([{' #τα ανοίγματα που ελέγει
	closes=')]}'#τα κλεισίματα
	for i in a: #σκανάρω την είσοδο. Eίναι str πχ '7+(5*6(-[a*b]-4))'
		if i in opens:
			stack.append(i)
		elif i in closes:
			if (not stack) or (opens.index(stack[-1])!=closes.index(i)):
                        # Αν είναι στα  closes ελέγχω δύο πράγματα για να γυρίσει false
                        # 1 Αν οι στοίβα είναι ίδια 2 το open δεν αντιστοιχεί στο close      
				return False
		        stack.pop()#Εφόσον δεν γυρίσει false κάνω pop στη στοίβα
		else: continue #Αν το i δεν είναι άνοιγμα ή κλείσιμο
	return not stack #Επιστρέφει True αν η στοίβα είναι άδεια
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 8 Μήνες πριν #4269

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Theo έγραψε:
Για το πρόβλημα με τις παρενθέσεις έγραψα μία συνάρτηση. Σχόλια ή προτάσεις βελτίωσης :) θα χαιρόμουν
>>> def check_balance(a):
	stack=[]#η στοίβα
	opens='([{' #τα ανοίγματα που ελέγει
	closes=')]}'#τα κλεισίματα
	for i in a: #σκανάρω την είσοδο. Eίναι str πχ '7+(5*6(-[a*b]-4))'
		if i in opens:
			stack.append(i)
		elif i in closes:
			if (not stack) or (opens.index(stack[-1])!=closes.index(i)):
                        # Αν είναι στα  closes ελέγχω δύο πράγματα για να γυρίσει false
                        # 1 Αν οι στοίβα είναι ίδια 2 το open δεν αντιστοιχεί στο close      
				return False
		        stack.pop()#Εφόσον δεν γυρίσει false κάνω pop στη στοίβα
		else: continue #Αν το i δεν είναι άνοιγμα ή κλείσιμο
	return not stack #Επιστρέφει True αν η στοίβα είναι άδεια

Ο αλγοριθμός σου είναι τέλειος δεν νομίζω να γίνεται να βελτιωθεί :P
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 8 Μήνες πριν #4270

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Δεν μιλάω για τον αλγόριθμο που είναι τέλειος επειδή δεν είναι δικός μου B)
μιλάω για την υλοποίηση που είναι ατελείς και σίγουρα παίρνει πολλές βελτιώσεις
Μία που σκέφτηκα και νομίζω βελτιώνει αρκετά την κατάσταση είναι να βάλουμε ένα dict αντί για τα opens closes
maches={'(':')', '[':']', '{':'}'}
και το σύνολο θα γίνει έτσι
def check_balance(a):
	stack=[]
	maches={'(':')', '[':']', '{':'}'}
	for i in a: 
		if i in maches:
			stack.append(i)
		elif i in maches.values():
			if (not stack) or maches[stack[-1]]!=i:
				return False
			stack.pop()
		else: continue 
	return not stack

Νομίζω είναι καλύτέρο
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 8 Μήνες πριν #4271

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Theo έγραψε:
Δεν μιλάω για τον αλγόριθμο που είναι τέλειος επειδή δεν είναι δικός μου B)
μιλάω για την υλοποίηση που είναι ατελείς και σίγουρα παίρνει πολλές βελτιώσεις
Μία που σκέφτηκα και νομίζω βελτιώνει αρκετά την κατάσταση είναι να βάλουμε ένα dict αντί για τα opens closes
maches={'(':')', '[':']', '{':'}'}
και το σύνολο θα γίνει έτσι
def check_balance(a):
	stack=[]
	maches={'(':')', '[':']', '{':'}'}
	for i in a: 
		if i in maches:
			stack.append(i)
		elif i in maches.values():
			if (not stack) or maches[stack[-1]]!=i:
				return False
			stack.pop()
		else: continue 
	return not stack

Νομίζω είναι καλύτέρο

Μπα. Πριν είχες απλά strings για τα maches και τώρα έχεις ολόκληρη δομή δεδομένων. Το dictionary είναι αργό να το υλοποίηση η python συν ότι θα πιάνει περισσότερο χώρο απ'ότι τα strings.Όχι ότι θα έχεις πρόβλημα στον συγκεκριμένο αλγόριθμο αλλά και πάλι δεν αλλάζει τίποτα.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θελω Βοηθεια με καποιες εργασιες για την python (1o ετος) 7 Χρόνια 8 Μήνες πριν #4272

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Το θέμα με την ταxύτητα δεν νομίζω ότι ισχύει τα dicts είναι πολύ γρήγορα
>>> xronos = timeit.Timer('check_balance2("()[]{}")','from __main__ import check_balance2')
>>> print(xronos.timeit(number=5000))
0.020485372997230217 #αυτός είναι ο χρόνος με τα sting
 
>>> xronos2 = timeit.Timer('check_balance("()[]{}")','from __main__ import check_balance')
>>> print(xronos2.timeit(number=5000))
0.013392637598684587 #αυτός είναι ο χρόνος με dict για 5000 επαναλήψης 

Βέβαια αν πάμε σε μεγάλα νούμερα
>>> print(xronos.timeit(number=500000))
1.5478969179999922
>>> print(xronos2.timeit(number=500000))
1.3764178735563064
>>> #500.000 επαναλήψεις μειώνεται η διαφορά το dict όμως είναι αισθητά και σταθέρα γρηγορότερο.
Ίσως να ήταν πιο αργά σε python 2 έχουν γίνει όμως μεγάλες αλλαγές και είναι πλέον πολύ γρηγορά και δυναμικά
>>> D = {'name': 'Theo', 'age': 50}
>>> a=D.values()
>>> D['job']='Tempelis'
>>> a
dict_values(['Theo', 50, 'Tempelis'])
>>> 
Το a πήρε την νέα ιδιότητα χωρίς να το ξαναορίσω
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.577 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου