Что такое конкатенация? Читаем Wiki. В итоге поставленный вопрос выглядит уж очень просто (не знаю почему его вносят в список вопросов на собеседованиях). Ответ:
1
2
3
4 s1 = (1, 2, 3)
s2 = (4, 5)
s3 = s1 + s2 # (1, 2, 3, 4, 5)
print s3, type(s3)
Что такое конкатенация? Читаем 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))
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