Μία σειρά στοιχείων (αριθμών, συμβολοσειρών κλπ) μπορούν να οργανωθούν σε μία δομή η οποία ονομάζεται λίστα. Η δομή ορίζεται μεταξύ ορθογώνιων παρενθέσεων και τα στοιχεία χωρίζονται μεταξύ τους με κόμμα. Ας δούμε παραδείγματα.
>>> rgb = ['red','green','blue']
>>> cities = ['Agios','Heraklion','Rethymno','Chania']
>>> digits = [0,1,2,3,4,5,6,7,8,9]
Ο αριθμός των στοιχείων μίας λίστας μπορεί να βρεθεί με χρήση της συνάρτησης len
.
>>> len(digits)
10
Μπορούμε να ανακτήσουμε ένα από τα στοιχεία της λίστας χρησιμοποιώντας τον δείκτη του. Η δεικτοδότηση είναι ακριβώς όπως στις συμβολοσειρές.
>>> rgb[1]
'green'
>>> rgb[-1]
'blue'
>>> digits[1:3]
[1,2]
>>> digits[7:]
[7,8,9]
Βλέπουμε ότι η σύνταξη είναι όμοια με αυτή που χρησιμοποιήσαμε στον τεμαχισμό συμβολοσειρών.
>>> cmyk = ['cyan','magenta','yellow','black']
>>> colors = rgb + cmyk
>>> colors
['red','green','blue','cyan','magenta','yellow','black']
Μπορούμε να χρησιμοποιήσουμε τo σύμβολo του πολλαπλασιασμού (*) μεταξύ ακεραίου n και λίστας L.
Η n*L
δίνει μία νέα λίστα η οποία περιέχει n φορές τα στοιχεία της L σε διαδοχική σειρά.
>>> 2*rbg
['red','green','blue','red','green','blue']
>>> 2*[0,1]
[0,1,0,1]
Σε μία υπάρχουσα λίστα μπορούμε να προσθέσουμε ένα στοιχείο. Για παράδειγμα,
>>> colours.append('white')
>>> colors
['red','green','blue','cyan','magenta','yellow','black','white']
append
και αυτή επέδρασε στη λίστα colors
. Προστέθηκε ένα στοιχείο ('white'
) στην λίστα.
Το όρισμα e
της μεθόδου append
προστίθεται ως τελευταίο στοιχείο στη λίστα L
και η υπάρχουσα λίστα μεγαλώνει κατά ένα στοιχείο.
Η γενική σύνταξη για μία μέθοδο είναι
λιστα.μεθοδος(ορισμα)
.
Ας δούμε τώρα μερικές χρήσιμες μεθόδους για λίστες.
e
και το αφαιρεί από την λίστα L
.
Για παράδειγμα:
>>> colors.remove('white')
>>> colors
['red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'black']
L
(και το επιστρέφει).
Επίσης μπορούμε να αφαιρέσουμε στοιχείο με συγκεκριμένο δείκτη.
>>> colors.pop()
'white'
>>> colors
['red','green','blue','cyan','magenta','yellow', 'black']]
>>> colors.pop(1)
'green'
>>> colors
['red','blue','cyan','magenta','yellow', 'black']
append
).
Λέμε ότι οι λίστες είναι μεταλλάξιμες.
Μπορούμε να ελέγξουμε αν ένα δεδομένο στοιχείο περιέχεται σε μία λίστα.
>>> 'white' in colors
False
>>> if 'white' not in colors: colors.append('white')
# Create lists with the countries of the continents
Europe = ['greece','italy','france','norway','denmark','the netherlands']
Asia = ['china','india','korea','nepal','thailand','iran']
America = ['USA','perou','canada','mexico']
# ask the user for the name of a country
country = input('Give the name of a country: ')
# Initialize an auxiliary variable
newCountry = ''
# check whether the given country is included in a list
if country in Europe:
print(country,'is in Europe')
elif country in Asia:
print(country,'is in Asia')
elif country in America:
print(country,'is in America')
else:
newCountry = input('Does this country belong to Europe, Asia or America? ')
# Add the new country in one of the lists
if newCountry == 'Europe':
Europe.append(country)
elif newCountry == 'Asia':
Asia.append(country)
elif newCountry == 'America':
America.append(country)
# Print the content of the lists
print(Europe)
print(Asia)
print(America)
import sys # Εισάγει εντολές και συναρτήσεις του interpreter
months31 = [1,3,5,7,8,10,12] # Μήνες με 31 ημέρες
months30 = [4,6,9,11] # Μήνες με 30 ημέρες
# Εισάγουμε ημερομηνία
day = int(input("Give day: "))
month = int(input("Give month: "))
year = int(input("Give year: "))
if 1 <= month >= 12: # Ο μήνας πρέπει να είναι από 1 έως 12
print("You entered the date {}-{}-{}".format(day,month,year))
else:
print("There is no such month")
sys.exit() # Τερματίζεται η εκτέλεση του προγράμματος
if month in months31: # Βρίσκουμε την τελευταία ημέρα του μήνα
lastday = 31
elif month in months30:
lastday = 30
elif month == 2:
lastday = 28
else: # Θα συμβεί αν υπάρχει λάθος
print("Month has no days!")
sys.exit()
# Βρίσκουμε την επόμενη ημερομηνία: ημέρα, μήνα, έτος
if 0 < day < lastday:
day = day + 1
elif day == lastday:
day = 1
if month == 12:
month = 1
year = year + 1
else:
month = month + 1
else:
print("There is no such day!")
sys.exit()
# Τυπώνουμε το αποτέλεσμα
print("Next date is {}-{}-{}".format(day,month,year))
e
στη λίστα L
.
e
στη λίστα L
.
L
.
L
σε αύξουσα σειρά.
e
τοποθετείται στη θέση i
της λίστας L
.
>>> L = ['a','b','c','d','e','f']
>>> L.reverse()
>>> L
['f', 'e', 'd', 'c', 'b', 'a']
L.reverse
(καθώς και οι άλλες μέθοδοι: sort, insert
κλπ) μεταλλάσσει την ίδια τη λίστα
(και δεν δημιουργεί μία καινούρια για να βάλει το αποτέλεσμα της μεθόδου).
random
το οποίο παρέχει την συνάρτηση shuffle
η οποία αναδιατάσσει με τυχαίο τρόπο τα στοιχεία μίας λίστας.
import random
L = ['a','b','c','d','e','f']
random.shuffle(L)
print(L.index('a'))
del.
>>> a = 3
>>> a
3
>>> del a # δεν υπάρχει πλέον μεταβλητή a
>>> L = [0,1,2,3,4,5]
>>> del L[1]
>>> L
[1,2,3,4,5]
>>> exampleList = ['father',30,'son',3]
>>> exampleList = [[1,2,3],['a','b','c']]
[]
.
Ακολούθως, την επεκτείνουμε βάζοντας μία-μία τις άρτιες μεταθέσεις τριών αριθμών.
Κάθε μία από τις μεταθέσεις είναι λίστα τριών αριθμών.
>>> permute = []
>>> permute.append([1,2,3])
>>> permute.append([2,3,1])
>>> permute.append([3,1,2])
>>> permute
[[1, 2, 3], [2, 3, 1], [3, 1, 2]]
L1
η οποία είναι στοιχείο άλλης λίστας L
.
Αυτό μπορεί να γίνει με δύο τρόπους: είτε μέσω της αρχικής λίστας L1
είτε μέσω του αντίστοιχου στοιχείου της μεγαλύτερης λίστας L
.
>>> L1 = ['a','b','c']
>>> L2 = [1,2,3]
>>> L = [L1,L2]
>>> L
[['a', 'b', 'c'], [1, 2, 3]]
L1.append('d')
>>> L
[['a', 'b', 'c', 'd'], [1, 2, 3]]
>>> L[0].append('e')
>>> L
[['a', 'b', 'c', 'd', 'e'], [1, 2, 3]]
>>> L1
['a', 'b', 'c', 'd', 'e']
eval
μπορεί να αναγνωρίσει ότι μία συμβολοσειρά περιέχει δεδομένα υπό μορφή λίστας και να μετατρέψει την συμβολοσειρά σε λίστα.
>>> x = input("Give data: ")
Give data: [1,3,5,7]
>>> x = eval(x)
>>> print(x)
[1, 3, 5, 7]