Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

...ασύγχρονα μαθήματα python

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό nikosokin » 19 Νοέμ 2010, 01:24

Σε ευχαριστώ medigeek για το ενδιαφέρον σου.

Κι αν έχεις μία μεταβλητή η ποία παίρνει τιμή διαβάζοντας από ένα text αρχείο πώς θα το κάνεις αυτό?
####Θεωρούμε δεδομένο ότι το αρχείο έχει γραφτεί σε utf-8.
Έστω δηλαδή ότι:
Κώδικας: Επιλογή όλων
        lexi_from_file=""
        file_obj=open('file.txt', 'a')  #anoigei to arxeio gia anagnosi 'h eisagwgh stoixeion
        file_obj.read(lexi_from_file)
        file_obj.close()


Και πάλι σε ευχαριστώ.

Κράτα με να σε κρατώ να ανεβούμε το βουνό.
Η γνώση είναι για να μεταδίδεται και όχι να φυλακίζεται σε ένα κουφιοκέφαλο.
Άβαταρ μέλους
nikosokin
babeTUX
babeTUX
 
Δημοσιεύσεις: 8
Εγγραφή: 18 Νοέμ 2010, 18:52
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό medigeek » 19 Νοέμ 2010, 09:46

Δεν κάνει τίποτα. :) Ήμουν έτοιμος να σου πω διάβασε το σύνδεσμο που έδωσα προηγουμένως: http://docs.python.org/howto/unicode.ht ... icode-type
Αλλά για να μην ζορίζεσαι, μιας και αναφέρει κάτι στις παραγραφους για το utf-8 -- η απάντηση είναι (αν το αρχείο είναι utf-8): unicode( "text string", "utf-8")
Κώδικας: Επιλογή όλων
#!/usr/bin/python
# -*- coding=utf-8 -*-
file_obj = open('a.txt', 'a+')  #anoigei to arxeio gia anagnosi 'h eisagwgh stoixeion
alltext_from_file = file_obj.read()
unicoded_string = unicode(alltext_from_file, "utf-8")
file_obj.close()

print(unicoded_string)
for letter in unicoded_string:
    print(letter)


>>> file_obj = open('a.txt', 'ra')
>>> alltext_from_file = file_obj.read()
>>> unicoded_string = unicode(alltext_from_file, "utf-8")
>>> file_obj.close()
>>> print(alltext_from_file)
τεστ τεστ

>>> alltext_from_file
'\xcf\x84\xce\xb5\xcf\x83\xcf\x84 \xcf\x84\xce\xb5\xcf\x83\xcf\x84\n'
>>> unicoded_string
u'\u03c4\u03b5\u03c3\u03c4 \u03c4\u03b5\u03c3\u03c4\n'

>>> for letter in unicoded_string:
... print(letter)
...
τ
ε
σ
τ

τ
ε
σ
τ

Τελευταία επεξεργασία από medigeek και 19 Νοέμ 2010, 23:06, έχει επεξεργασθεί 1 φορά/ες συνολικά
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό nikosokin » 19 Νοέμ 2010, 18:16

Ευχαριστώ πάρα πολύ. Δεν έχεις ιδέα πόσο βοήθησες.
100000000000 "Ευχαριστώ".

Μήπως γνωρίζεις πού μπορώ να απευθυνθώ, αν όχι εδώ, σχετικά με κάποιο πρόβλημα που έχω με το άνοιγμα αρχείου text για την εφαρμογή μου?

Και πάλι ευχαριστώ

Κράτα με να σε κρατώ να ανεβούμε το βουνό.
Η γνώση είναι για να μεταδίδεται και όχι να φυλακίζεται σε ένα κουφιοκέφαλο.
Άβαταρ μέλους
nikosokin
babeTUX
babeTUX
 
Δημοσιεύσεις: 8
Εγγραφή: 18 Νοέμ 2010, 18:52
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό medigeek » 19 Νοέμ 2010, 19:55

Κανένα πρόβλημα, χαρά μου να βοηθήσω. :)

Ερωτήσεις που δεν έχουν να κάνουν με κανένα από τα μαθήματα πάνε εδώ:
viewtopic.php?f=6&t=5094
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό midkin » 06 Ιουν 2014, 23:15

Καλησπέρα μετά από καιρό.
Έχω την εξής ερώτηση...
Διάβαζα για λίστες, πλειάδες, λεξικά και σύνολα...
Στο βιβλίο ορίζεται:
Κώδικας: Επιλογή όλων
List = []
Tuple = ()
Dict = {}

Πηγαίνοντας στο σύνολο όμως μπερδεύτηκα...
Κώδικας: Επιλογή όλων
paradeigma = set ( [ 'ένα', 'δύο', 'τρία' ] )


Δηλαδή όλες οι δομές δεδομένουν ορίζονται αυτόνομα ενώ τα σύνολα θέλουν βοήθεια μεταβλητής για να ορισθούν; Αν όχι τα σύνολα ορίζονται πως;
Κώδικας: Επιλογή όλων
set = [ 'ένα', 'δύο' ]

ή
Κώδικας: Επιλογή όλων
set = ( 'ένα', 'δύο' )

ή
Κώδικας: Επιλογή όλων
set = [ ( 'ένα', 'δύο' ) ]


αν ορίζεται μόνο με αγκύλες ή μόνο με παρενθέσεις πως τα ξεχωρίζει η python από τις λίστες ή τις πλειάδες;
Ευχαριστώ.
Γνώσεις ⇛ Linux: Χαμηλό ┃ Προγραμματισμός: Χαμηλό ┃ Αγγλικά: Πολύ Καλά
Λειτουργικό: Laptop Lenovo G505s με Windows 8.1 / Ubuntu 14.10 & Mac OS X 10.10 μέσω VirtualBox
Προδιαγραφές ⇛ AMD A8 τετραπύρηνος │ 8 GB RAM |
Άβαταρ μέλους
midkin
babeTUX
babeTUX
 
Δημοσιεύσεις: 44
Εγγραφή: 05 Σεπ 2009, 21:14
Τοποθεσία: Κομοτηνή
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό lucinos » 07 Ιουν 2014, 18:27

midkin έγραψε:Δηλαδή όλες οι δομές δεδομένουν ορίζονται αυτόνομα ενώ τα σύνολα θέλουν βοήθεια μεταβλητής για να ορισθούν; Αν όχι τα σύνολα ορίζονται πως;
Κώδικας: Επιλογή όλων
set = [ 'ένα', 'δύο' ]


όχι, έτσι φτιάχνεις μια λίστα

ή
Κώδικας: Επιλογή όλων
set = ( 'ένα', 'δύο' )


όχι, έτσι φτιάχνεις μια πλειάδα

ή
Κώδικας: Επιλογή όλων
set = [ ( 'ένα', 'δύο' ) ]


όχι, έτσι φτιάχνεις μια λίστα που έχει στοιχείο μια πλειάδα.

Κώδικας: Επιλογή όλων
paradeigma = set ( [ 'ένα', 'δύο', 'τρία' ] )


έτσι γίνεται. τόσο απλό. αφού το γράφεις.

αυτό που συμβαίνει είναι ότι η set είναι μια συνάρτηση (το καταλαβαίνεις επειδή βλέπεις παρενθέσεις) που μετατρέπει αντικείμενα όπως λίστες ή πλειάδες σε σύνολα. όπως αντίστοιχα η list είναι μια συνάρτηση που μετατρέπει άλλα αντικείμενα σε λίστες.

εναλλακτικά υπάρχει και η σύνταξη με άγκιστρα. πχ το παρακάτω είναι ένα σύνολο.
Κώδικας: Επιλογή όλων
{'ένα', 'δύο'}


πειραματίσου στον φλοιό τής python (εκεί που έχει προτροπέα ">>>") για να λύνεις τις απορίες σου.
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό midkin » 08 Ιουν 2014, 05:31

@ lucinos

Σε ευχαριστώ πολύ για την απάντηση!!!
Γνώσεις ⇛ Linux: Χαμηλό ┃ Προγραμματισμός: Χαμηλό ┃ Αγγλικά: Πολύ Καλά
Λειτουργικό: Laptop Lenovo G505s με Windows 8.1 / Ubuntu 14.10 & Mac OS X 10.10 μέσω VirtualBox
Προδιαγραφές ⇛ AMD A8 τετραπύρηνος │ 8 GB RAM |
Άβαταρ μέλους
midkin
babeTUX
babeTUX
 
Δημοσιεύσεις: 44
Εγγραφή: 05 Σεπ 2009, 21:14
Τοποθεσία: Κομοτηνή
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό midkin » 08 Ιουν 2014, 20:19

Αν κατάλαβα καλά... Αυτό είναι ένα λεξικό:
Κώδικας: Επιλογή όλων
dict = { 'ένα' : 'δύο'
        'τρία' : 'τέσσερα' }

και αυτό ένα σύνολο;
Κώδικας: Επιλογή όλων
set = { 'ένα', 'δύο' }


Υ.Γ.
Μόλις δοκίμασα το εξής, και δούλεψε, οπότε μάλλον σωστά υποθέτω παραπάνω...
Κώδικας: Επιλογή όλων
set = { 'one', 'two', 'three', 'four' }
set2 = { 'one', 'two', 'three', 'four', 'five' }
if set2.issuperset(set) :
    print ( 'yes' )


Οπότε, η set χρησημοποιείται είτε με βοήθεια μεταβλητής, και ορίζετε έτσι:
Κώδικας: Επιλογή όλων
metavliti = set ( [ 'ένα', 'δύο' ] )


είτε αυτόνομα (όπως και όλες η άλλες) ΑΛΛΑ με αγκύλες (!) :
Κώδικας: Επιλογή όλων
set = { 'ένα', 'δύο' }


Σωστά; :)
Γνώσεις ⇛ Linux: Χαμηλό ┃ Προγραμματισμός: Χαμηλό ┃ Αγγλικά: Πολύ Καλά
Λειτουργικό: Laptop Lenovo G505s με Windows 8.1 / Ubuntu 14.10 & Mac OS X 10.10 μέσω VirtualBox
Προδιαγραφές ⇛ AMD A8 τετραπύρηνος │ 8 GB RAM |
Άβαταρ μέλους
midkin
babeTUX
babeTUX
 
Δημοσιεύσεις: 44
Εγγραφή: 05 Σεπ 2009, 21:14
Τοποθεσία: Κομοτηνή
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό Ilias95 » 08 Ιουν 2014, 22:23

Γενικά για να δεις τον τύπο μιας οποιασδήποτε μεταβλητής:
Κώδικας: Επιλογή όλων
ilias@archpc ~  ➜ python
Python 3.4.1 (default, May 19 2014, 17:23:49)
[GCC 4.9.0 20140507 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = { 'ena' : 'dyo', 'tria' : 'tessera' }
>>> type(a)
<class 'dict'>
>>> a = { 'ena', 'dyo' }
>>> type(a)
<class 'set'>
>>>


midkin έγραψε:Οπότε, η set χρησημοποιείται είτε με βοήθεια μεταβλητής, και ορίζετε έτσι:
Κώδικας: Επιλογή όλων
metavliti = set ( [ 'ένα', 'δύο' ] )



Η set() παίρνει οτιδήποτε iterable (lists, tuples, etc) και σου επιστρέφει ένα set.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό midkin » 08 Ιουν 2014, 22:27

Ilias95 έγραψε:Γενικά για να δεις τον τύπο μιας οποιασδήποτε μεταβλητής:
Κώδικας: Επιλογή όλων
ilias@archpc ~  ➜ python
Python 3.4.1 (default, May 19 2014, 17:23:49)
[GCC 4.9.0 20140507 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = { 'ena' : 'dyo', 'tria' : 'tessera' }
>>> type(a)
<class 'dict'>
>>> a = { 'ena', 'dyo' }
>>> type(a)
<class 'set'>
>>>


midkin έγραψε:Οπότε, η set χρησημοποιείται είτε με βοήθεια μεταβλητής, και ορίζετε έτσι:
Κώδικας: Επιλογή όλων
metavliti = set ( [ 'ένα', 'δύο' ] )



Η set() παίρνει οτιδήποτε iterable (lists, tuples, etc) και σου επιστρέφει ένα set.


ΜΜΜΜΜΜάλιστα!!! Αυτό το "Type" βοήθησε πολύ!!! :)))
Γνώσεις ⇛ Linux: Χαμηλό ┃ Προγραμματισμός: Χαμηλό ┃ Αγγλικά: Πολύ Καλά
Λειτουργικό: Laptop Lenovo G505s με Windows 8.1 / Ubuntu 14.10 & Mac OS X 10.10 μέσω VirtualBox
Προδιαγραφές ⇛ AMD A8 τετραπύρηνος │ 8 GB RAM |
Άβαταρ μέλους
midkin
babeTUX
babeTUX
 
Δημοσιεύσεις: 44
Εγγραφή: 05 Σεπ 2009, 21:14
Τοποθεσία: Κομοτηνή
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Μαθήματα python