Рубрики

Python | Понимание списка против оператора *

* оператор и диапазон () в Python 3.x имеет много применений. Одним из них является инициализация списка.

Код: Инициализация списка 1D-списка в Python

# Python-код для инициализации 1D-списка

  
# Инициализировать, используя звездный оператор
# список размера 5 будет инициализирован.
# звезда используется вне списка.

list1 = [0]*5  

  

  
# Инициализировать, используя понимание списка
# список размера 5 будет инициализирован.
# range () используется внутри списка.

list2 = [0 for i in range(5)]  

  

print("list1 : ", list1)

print("list2 : ", list2)

Выход:

list1 :  [0, 0, 0, 0, 0]
list2 :  [0, 0, 0, 0, 0]

Здесь Единственная разница — оператор звезды используется вне списка. И range () используется внутри. Эти два также могут быть использованы со списком в списке или многомерном списке.

Код: список в списке с использованием * операции и диапазона ()

# Код Python для
# инициализировать список в списке

  
# Инициализировать, используя звездный оператор

list1 = [[0]]*5  

  
# Инициализировать с помощью range ()

list2 = [[0] for i in range(5)]  # список из 5 «[0] list» инициализирован.

  
# Оба списка пока одинаковы

print("list1 : ", list1)

print("list2 : ", list2)

Выход:

list1 :  [[0], [0], [0], [0], [0]]
list2 :  [[0], [0], [0], [0], [0]]

Настоящий сбой в многомерном списке. При работе с многомерным списком метод инициализации имеет большое значение. Оба метода * оператор и понимание списка ведут себя по-разному.

Код: многомерный список

# Рассмотрим тот же предыдущий пример.

  
# Инициализировать, используя звездный оператор.

star_list = [[0]]*5

  
# Инициализировать используя список понимания.

range_list = [[0] for i in range(5)]

  

star_list[0] = 8 # Ожидаемый результат придет.

range_list[0] = 8 # Ожидаемый результат.

  
«»»
Выход:

    star_list = [8, [0], [0], [0], [0]]

    range_list = [8, [0], [0], [0], [0]]

«»»

  
# Неожиданный вывод придет.

star_list[2].append(8

«»»

    Так как star_list [2] = [0]. так что найду для всех

    [0] в списке и добавьте '8' к каждому вхождению

    [0]. И не повлияет на "non [0]" элементы списка. '' '

      

      

range_list[2].append(8) # ожидаемый результат.

  

print("Star list  : ", star_list)

print("Range list : ", range_list)

Выход:

Star list  :  [8, [0, 8], [0, 8], [0, 8], [0, 8]]
Range list :  [8, [0], [0, 8], [0], [0]]

If someone wants to deal with 1D-array, one can use anything. But with the multidimensional array, one should use list comprehension.

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

Python | Понимание списка против оператора *

0.00 (0%) 0 votes