Что такое конкатенация? Читаем Wiki. В итоге поставленный вопрос выглядит уж очень просто (не знаю почему его вносят в список вопросов на собеседованиях). Ответ:

1
2
3
4
s1 = (1, 2, 3)
s2 = (4, 5)
s3 = s1 + s2    # (1, 2, 3, 4, 5)
print s3, type(s3)
1
2
d = { 'a': 1, 'b':2, 'c': 3, 'd': 4 }    # исходный словарь - итерируемый объект
inv_d = dict((v,k) for k, v in d.iteritems())    # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

Для python3 решение более изящное:

1
inv_d = {v:k for k, v in d.items()}
1
2
3
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))    # {'a': 1, 'c': 3, 'b': 2} - результат

Функция zip возвращает кортежи, состоящие из пар элементов обоих списков, а затем метод dict создает новый словарь. Однако для достаточно больших списков zip () — плохая идея.

Более рациональное решение с точки зрения использования ресурсов:

1
2
3
4
import itertools
keys = ('a', 'b', 'c')    # в данном примере составляем словарь из 2х кортежей
values = (1, 2, 3)
adict = dict(itertools.izip(keys,values))

июня 29, 2010Python: Срезы

Python создавался под влиянием множества языков программирования, в т.ч. и Фортрана (Fortran). Именно благодаря ему в Питоне появились срезы.

На собеседовании по срезам могут задать два очень простых вопроса:

  • Как получить последний элемент массива?
  • Как получить часть строки?

Для начала следует отметить, что массивы и строки в Python — это последовательности. Для них существует определенный набор операций над срезами. Особенностью является индексация. Индексы элементов начинаются с нуля. Срез можно записать следующим образом: s[N:M] — в срез попадают все элементы от N включительно до M исключительно.

В итоге ответы на поставленные вопросы + несколько примеров:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
l = ['A', 'B', 'C', 1, 2]    # исходный список (массив)
ln = l[-1]    # 2 - получаем последний элемент массива, используя обратную индексацию
lt = l[-2:]    # [1, 2] - получаем два последних элемента массива
lf = l[ :-2]    # ['A', 'B', 'C'] - получаем все элементы массива кроме 2х последних

s = 'Hello World!'    # исходная строка
s1 = s[6:11]    # получаем подстроку 'World', '!' не включается
s2 = s[6:]    # 'World!' - получаем подстроку от символа 'W' включая и до конца s
s3 = s[:5]    # 'Hello' - получаем подстроку от начала s и до символа пробела не включая
sc = s[ : ]    # 'Hello World!' - срез - копия исходной строки
ss = s[6:11:2]    # 'Wrd' - в данном срезе задается еще и 3й параметр - шаг (по умолчанию шаг всегда = 1)

se = s[:40]    # 'Hello World!' - индекс выходит за пределы длины последовательности, но результат все равно корректен!
sr = s[::-1]    # '!dlroW olleH' - а вот таким способом можно получить перевернутую строку!

Как поменять местами значения двух переменных a = 1 и b = 2? Если вы до Python программировали, например, на C#, то первое, что придет в голову — ввести дополнительную переменную:

1
2
3
temp = a
a = b
b = temp

Но есть куда более изящный путь — воспользоваться кортежами:

1
a, b = b, a

По сути мы имеем два кортежа (помним, что скобки при записи можно опустить) — (a, b) и (b, a). При таком присваивании и происходит обмен значениями переменных.

P.S. Задачу можно решить еще одним способом — при помощи алгоритма исключающего ИЛИ (XOR):

1
2
3
a ^= b
b ^= a
a ^= b

Получается чуточку длиннее :)

Объект a – это список (list), изменяемый объект. Списки в Python – самый гибкий тип упорядоченных коллекций. Списки могут содержать объекты любых типов (в том числе и другие списки).

Несколько примеров:

1
2
3
4
5
6
a = []       # Пустой список
a.append(1)  # Добавить 1 в список, теперь a = [1]
a.append(2)  # Добавить 2 в список, теперь a = [1, 2]
s = list("hello")  # Преобразовать строку в список ['h', 'e', 'l', 'l', 'o']
print s[0], s[3] # h l
print type(s) # Получить тип объекта s: list

Подробнее о списках

Объект b – это кортеж (tuple), неизменяемый объект. Кортеж в Python – простая группа объектов. Кортежи не имеют методов, но обладают почти такими же свойствами, что и списки.

Несколько примеров:

1
2
3
4
5
6
7
b = ()  # Пустой кортеж
b = (1,) # Кортеж из одного элемента 1
b = (1, 2,)
b = 1, 2, 'Hello', [1, 2], # При желании круглые скобки можно опускать
print len(b)   # Длина кортежа = 4
print b[1]     # 2
print type(b)  #Получить тип объекта b: tuple

Подробнее о кортежах


Страница 2 из 20123451020...Последняя »

© 2009 PodCode – IT-заметки | Powered by Wordpress