Раздел «Язык Си».PythonList3:

Список пустой?

Как проверить, что список a не пустой?

Плохо:

if len(a) > 0:
    print('НЕ пустой список')

Хорошо:

if a:
    print('НЕ пустой список')

Изменение списков

Список можно изменять.

a.append(x) - добавить 1 элемент в список

a = [3, 7, -1]
print(a)        # [3, 7, -1]

a.append(5)
a.append(0)
print(a)        # [3, 7, -1, 5, 0]

a.extend(b) - добавить в конец списка a список b

a = [3, 7, -1]
print(a)        # [3, 7, -1]

a.extend([5, 0])
print(a)        # [3, 7, -1, 5, 0]

a+b - новый список

Складывая списки a+b получаем новый список. a и b не изменяются.

a = [3, 7, -1]
b = [5, 0]

c = a + b

print(a)        # [3, 7, -1]
print(b)        # [5, 0]
print(c)        # [3, 7, -1, 5, 0]

a += b это a.extend(b)

a = [3, 7, -1]
b = [5, 0]

a += b

print(a)        # [3, 7, -1, 5, 0]
print(b)        # [5, 0]

x = a.pop() - удалить элемент из конца списка

a = [3, 7, -1, 5]
print(a)        # [3, 7, -1, 5]

x = a.pop()

print(x)        # 5
print(a)        # [3, 7, -1]

x = a.pop()

print(x)        # -1
print(a)        # [3, 7]

x = a.pop(i) - удалить элемент с НОМЕРОМ i

i - индекс (номер) элемента в списке

a = [3, 7, -1, 5]
print(a)        # [3, 7, -1, 5]

x = a.pop(0)

print(x)        # 3
print(a)        # [7, -1, 5]

x = a.pop(1)

print(x)        # -1
print(a)        # [7, 5]

Примеры

Скалярное умножение векторов

Повторим, что уже знаем:

def scal(a, b):
    res = 0
    for i in range(len(a)):
        res = res + a[i]*b[i]
    return res

a = [3, 7, -1]
b = [2, 1, 10]
x = scal(a, b)

print(a)        # [3, 7, -1]
print(b)        # [2, 1, 10]
print(x)        # 2*3 + 7*1 + -1*10 = 6+7-10 = 3

Сложение векторов

Будем хранить вектора как списки. Сложим a и b, получим новый список с.

def vadd(a, b):
    c = []
    for i in range(len(a)):
        c.append( a[i] + b[i] )
    return c

a = [3, 7, -1]
b = [2, 1, 10]
x = vadd(a, b)

print(a)        # [3, 7, -1]
print(b)        # [2, 1, 10]
print(x)        # [5, 8, 9]

Задачи

Задачи (Вьетнам)

Не обязательные:

Пример: чтение матрицы из 3 строк

def read_matrix(n)
    a = []

    for i in range(n):
        row = list(map(int, input().split()))
        print(row)
        a.append(row)
        print(a)

m = read_matrix(3)  # читаем матрицу из 3 строк

Задачи (Mьянма)

Задача 2 "первый и второй"

Дан список. Сделать из него 2 списка, как показано на рисунке.

  +---+---+---+
b | 1 | 2 | 0 |
  +---+---+---+
    |    \    \ 
    |     \       \ 
  +---+---+---+---+---+---+
a | 1 | 7 | 2 | 3 | 0 | 8 | 
  +---+---+---+---+---+---+
        |      /       /
        |     /   /
      +---+---+---+
c     | 7 | 3 | 8 |
      +---+---+---+

Задачи специальные

Задача 1.

#    0  1  2   3   4  5  6  7   8   9  10
a = [2, 5, 7, 10, 13, 8, 4, 6, 11, -6, -3]

# тут нужно написать код
# ....

print(a)    # [2, 5, 7, 10, 13, 8, 4, 6, 11, -6, -3]
print(b)    # [7, 10, 13, 8, 4, 6, 11]

Задача 2.

a = [2, 5, -7, 10, 13, -8, 4, 6, -11, -6, 3]

# тут нужно написать код
# ....

print(a)    # [2, 5, -7, 10, 13, -8, 4, 6, -11, -6, 3]
print(b)    # [2, 5, 10, 13, 4, 6, 3]

Задача 3.

a = [2, 5, -7, 10, 13, -8, 4, 6, -11, -6, 3]

# тут нужно написать код
# ....

print(a)    # [2, 5, -7, 10, 13, -8, 4, 6, -11, -6, 3]
print(b1)   # [2, 5, 10, 13, 4, 6, 3]
print(b1)   # [-7, -8, -11, -6]

Задача 4.

a = [1, 7, 4]
b = [8, 9, 3]

# тут нужно написать код
# ....

print(a)    # [1, 7, 4]
print(b)    # [8, 9, 3]
print(c)    # [1, 8, 7, 9, 4, 3]

-- TatyanaDerbysheva - 13 Nov 2018