Рубрики

Понимание списка Python и нарезка

Понимание списка — это элегантный способ определить и создать список в Python. Мы можем создавать списки точно так же, как математические выражения и только в одну строку. Синтаксис понимания списка легче понять.

A list comprehension generally consist of these parts :
   Output expression, 
   input sequence, 
   a variable representing member of input sequence and
   an optional predicate part. 

For example :

lst  =  [x ** 2  for x in range (1, 11)   if  x % 2 == 1] 

here, x ** 2 is output expression, 
      range (1, 11)  is input sequence, 
      x is variable and   
      if x % 2 == 1 is predicate part.

# Программа Python для демонстрации понимания списка в Python

  
# Список ниже содержит квадрат всех нечетных чисел из
# диапазон от 1 до 10

odd_square = [x ** 2 for x in range(1, 11) if x % 2 == 1]

print odd_square

  
# для понимания, выше поколение такое же, как,

odd_square = []

for x in range(1, 11):

    if x % 2 == 1:

        odd_square.append(x**2)

print odd_square

  
# Список ниже содержит степень 2 от 1 до 8

power_of_2 = [2 ** x for x in range(1, 9)]

print power_of_2

  
# ниже список содержит простые и не простые в диапазоне от 1 до 50

noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]

primes = [x for x in range(2, 50) if x not in noprimes]

print primes

  
# список для опускания символов

print [x.lower() for x in ["A","B","C"]]

  
# список, который извлекает номер

string = "my phone number is : 11122 !!"

  

print("\nExtracted digits")

numbers = [x for x in string if x.isdigit()]

print numbers

  
# Список списка для таблицы умножения

a = 5

table = [[a, b, a * b] for b in range(1, 11)]

  

print("\nMultiplication Table")

for i in table:

    print i

Выход:

[1, 9, 25, 49, 81]
[1, 9, 25, 49, 81]
[2, 4, 8, 16, 32, 64, 128, 256]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
['a', 'b', 'c']

Extracted digits
['1', '1', '1', '2', '2']

Multiplication Table
[5, 1, 5]
[5, 2, 10]
[5, 3, 15]
[5, 4, 20]
[5, 5, 25]
[5, 6, 30]
[5, 7, 35]
[5, 8, 40]
[5, 9, 45]
[5, 10, 50]

Получив список, мы можем получить его часть, используя оператор нарезки в python, который имеет следующий синтаксис:


    [start : stop : steps]  

which means that slicing will start from index start
 will go up to stop in step of steps. 
 Default value of start is 0, stop is last index of list
 and for step it is 1 

Таким образом, [: stop] будет разрезать список от начала до конца индекса, а [start:] будет разрезать список от начала индекса до конца. Отрицательное значение шагов показывает обход справа налево вместо обхода слева направо, поэтому [:: -1] распечатывает список в обратном порядке.

# Давайте сначала создадим список, чтобы продемонстрировать нарезку
# lst содержит все числа от 1 до 10

lst = range(1, 11)

print lst

  
№ ниже списка имеет номера от 2 до 5

lst1_5 = lst[1 : 5]

print lst1_5

  
№ ниже списка имеет номера от 6 до 8

lst5_8 = lst[5 : 8]

print lst5_8

  
# в списке ниже указаны номера от 2 до 10

lst1_ = lst[1 : ]

print lst1_

  
№ ниже списка имеет номера от 1 до 5

lst_5 = lst[: 5]

print lst_5

  
# в списке ниже номера от 2 до 8 на шаге 2

lst1_8_2 = lst[1 : 8 : 2]

print lst1_8_2

  
№ ниже списка имеет номера от 10 до 1

lst_rev = lst[ : : -1]

print lst_rev

  
# в списке ниже номера от 10 до 6 на шаге 2

lst_rev_9_5_2 = lst[9 : 4 : -2]

print lst_rev_9_5_2

Выход:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 3, 4, 5]
[6, 7, 8]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5]
[2, 4, 6, 8]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[10, 8, 6]

Мы можем использовать функцию фильтра для фильтрации списка на основе некоторого условия, представленного как лямбда-выражение в качестве первого аргумента, и списка в качестве второго аргумента, пример которого показан ниже:

# фильтрация нечетных чисел

lst = filter(lambda x : x % 2 == 1, range(1, 20))

print lst

  
# фильтрация нечетного квадрата, который делится на 5

lst = filter(lambda x : x % 5 == 0

      [x ** 2 for x in range(1, 11) if x % 2 == 1])

print lst

  
# фильтрация отрицательных чисел

lst = filter((lambda x: x < 0), range(-5,5))

print lst

  
# реализуя функцию max (), используя

print reduce(lambda a,b: a if (a > b) else b, [7, 12, 45, 100, 15])

Выход:

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[25]
[-5, -4, -3, -2, -1]
100

Эта статья предоставлена Уткаршем Триведи. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Понимание списка Python и нарезка

0.00 (0%) 0 votes