Речници, низове и малко функции

„ Програмиране с Python“, ФМИ

lecturers = {
    'Стефан': 'Кънев', 
    'Николай': 'Бачийски', 
    'Точо': 'Точев',
    'Димитър': 'Димитров',
}

11.03.2009г.

Речници

Речници (2)

>>> languages = {
    'Spain': 'Spanish',
    'Great Britain': 'English',
    'Italy': 'Italian',
    'Mexico': 'Spanish',
    'France': 'French',
    'USA': 'English',
}

>>> languages['Mexico']
'Spanish'

Речници (3)

>>> capitals = {
    'Germany': 'Berlin',
    'France': 'Paris',
    'Brazil': 'Rio de Janeiro',
    'Malaysia': 'Kuala Lumpur',
}
>>> capitals['Brazil']
'Rio de Janeiro'
>>> capitals['Brazil'] = 'Brazil'
>>> capitals['Brazil']
'Brazil'
>>> capitals['Sweden'] = 'Stockholm'
>>> capitals['Sweden']
'Stockholm'
>>> del capitals['Malaysia']
>>> capitals['Malaysia']
KeyError: 'Malaysia'

Речници — методи

>>> capitals = {
    'Germany': 'Berlin',
    'France': 'Paris',
    'Brazil': 'Rio de Janeiro',
    'Sweden': 'Stockholm',
}
>>> capitals.get('Assyria')
None
>>> capitals.get('Assyria', "I don't know")
"I don't know"
>>> 'Sweden' in capitals
True
>>> list(capitals.keys())
['Brazil', 'Sweden', 'Germany', 'France']
>>> list(capitals.values())
['Rio de Janeiro', 'Stockholm', 'Berlin', 'Paris']
>>> len(capitals)
4

Речници — методи (2)

>>> numbers = {
    "One": "I",
    "Two": "II",
}

>>> list(numbers.items())
[('One', 'I'), ('Two', 'II')]
>>> numbers.update({"Three": "III", "Four": "IV"})
>>> numbers
{'Four': 'IV', 'Three': 'III', 'Two': 'II', 'One': 'I'}
>>> numbers.pop('Four')
'IV'
>>> numbers
{'Three': 'III', 'Two': 'II', 'One': 'I'}

Речници — методи (3)


>>> {1: 1, 2:2} == {2: 2, 1: 1}
True
>>> numbers = {
    "One": "I",
    "Two": "II",
}

>>> numbers_copy = numbers.copy()
>>> numbers_copy
{'Two': 'II', 'One': 'I'}
>>> numbers
{'Two': 'II', 'One': 'I'}
>>> numbers.clear()
>>> numbers_copy
{'Two': 'II', 'One': 'I'}
>>> numbers
{}

Три други начина за създаване на речник

Хеш функции

Отново към for цикъла

... range() ...

range(x, y) връща числата в интервала [x, y)


>>> list(range(0, 10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(10, 0, -1))
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Пример за for

for n in range(0, 20):
    if n % 2: continue
    print(n)
    if n > 9: break
Произвежда следния резултат:
0
2
4
6
8
10

Пример

romans = {1: 'I', 2: 'II', 3: 'III', 4: 'IV', 5: 'V'}
numbers = [2, 3, 5]

for n in numbers:
    print(n, "is", romans[n], "in Roman numbers")

Получава:

2 is II in Roman numbers
3 is III in Roman numbers
5 is V in Roman numbers

Още for

romans = {1: 'I', 2: 'II', 3: 'III', 4: 'IV', 5: 'V'}

for n, roman in romans.items():
    print(n, "is", roman, "in Roman numbers")

Получава:

1 is I in Roman numbers
2 is II in Roman numbers
3 is III in Roman numbers
4 is IV in Roman numbers
5 is V in Roman numbers

Текстови низове

Текстови низове (2)

>>> sentence = "The quick brown fox jumps over the lazy dog"
>>> sentence[4]
'q'
>>> sentence[-1] = 't'
TypeError: 'str' object does not support item assignment
>>> for x in sentence[0:15]: print(x, end=' ')
T h e   q u i c k   b r o w n   f o x
>>> sentence[-1:-4:-1]
'god'
>>> 'fox' in sentence
True

Съединяване (конкатенация)

Форматиране

>>> "This is {0} {1} bird!".format(1, 'dead')
This is 1 dead bird!
>>> exclamation = "Ni"
>>> "The knights who say {0}!".format(exclamation)
'The knights who say Ni!"

>>> "{color} {title}".format(title='Knight', color='Black')
Black Knight

Форматиране (2)

>>> "Padded str {0!r:{1}} (small one)".format("test", 10)
"A string with padding 'test'     (small one)"
>>> 'Payment {0:8.2f}'.format(2.5)
'Payment     2.50'
>>> 'Percents {0:.1%}'.format(0.0042)
'Percents 0.4%'
>>> 'Centered "{0:^11}"'.format("Title")
'Centered "   Title   "'

Методи (1)

Преобразувания

>>> string = 'my Dead Parrot'
>>> string.capitalize() # Първата буква главна, другите малки
'My dead parrot'
>>> string.title() # Всички думи започват с главна буква
'My Dead Parrot'
>>> string.upper() # Прави всички букви главни
'MY DEAD PARROT'
>>> string.lower() # Прави всички букви малки
'my dead parrot'
# дава ни списък с отделните части на низа, разделени с аргумента на split
>>> string.split(' ') 
['my', 'Dead', 'Parrot']
>>> ' '.join(['my', 'Dead', 'Parrot'])
'my Dead Parrot'

Методи (2)

Премахване на символи отляво или отдясно.


>>> spam = "  S P A M   "
>>> spam.strip()
'S P A M'
>>> spam.lstrip()
'S P A M   '

По подразбиране премахва white-space, но може и да му се каже изрично низ със символи, които да премахне.

>>> "The knights say 'Niiiiiiii'".rstrip("Ni'")
'The knights say '

Методи (3)

Търсене из низа

>>> message = "Be vewy vewy quiet. I'm hunting for wabbits!"
>>> message.startswith('Be') # Проверява дали message започва с 'Be'
True
>>> message.endswith('bits!') # Проверява дали message завършва на 'bits!'
True
>>> message.find('vewy') # при неуспех - -1
3
>>> message.index('vewy') # същото като find но при неуспех - ValueError
3
>>> message.rfind('vewy')
8
>>> message.rindex('vewy')
8
>>> message.replace('wabbits', 'Buggs Bunny')
"Be vewy vewy quiet. I'm hunting for Buggs Bunny!"

Функции

Функции (2)

Ако искате една функция да взема повече от един аргумент, просто ги разделяте със запетаи:

def order_pizza(type, ketchup, mayo):
    order = "I want a " + type + " pizza."
    if ketchup: order += " Please add ketchup."
    if mayo: order += " And please add mayo."

    reply = call_and_tell("555-PIZZA", order)
    return reply

>>> order_pizza("Margaritta", False, True)

Още въпроси?