Π Π°Π·Π½ΠΎΠ΅

Python ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки: Бписки, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ словари Π² Python

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Python. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: список, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, мноТСство, ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π° 3.6 Data Structures ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Intermediate Python.

Python содСрТит встроСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…: списки, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, словари.

Бписки

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ list():

my_list1 = [] # ΠŸΡƒΡΡ‚ΠΎΠΉ список
my_list2 = list() # ΠŸΡƒΡΡ‚ΠΎΠΉ список



my_list1 = [] # ΠŸΡƒΡΡ‚ΠΎΠΉ список

my_list2 = list() # ΠŸΡƒΡΡ‚ΠΎΠΉ список

Бписок сохраняСт порядок элСмСнтов с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ создаётся ΠΈΠ»ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ элСмСнты Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ. Бписки ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ доступ ΠΊ элСмСнтам ΠΏΠΎ индСксу, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ описаны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт списка находится ΠΏΠΎΠ΄ индСксом 0, послСдний β€” Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС Π΄Π»ΠΈΠ½Ρ‹ списка.

>>> name = [«obi», «ike», «nwosu»]
>>> name[0]
‘obi’
>>> name[1]
‘ike’
>>> name[2]
‘nwosu’



>>> name = [«obi», «ike», «nwosu»]

>>> name[0]

‘obi’

>>> name[1]

‘ike’

>>> name[2]

‘nwosu’

ΠœΠ΅Ρ‚ΠΎΠ΄ append() добавляСт элСмСнт Π² список.

>>> name = [«obi», «ike», «nwosu»]
>>> name.append(«nkem»)
>>> names
[«obi», «ike», «nwosu», «nkem»]



>>> name = [«obi», «ike», «nwosu»]

>>> name.append(«nkem»)

>>> names

[«obi», «ike», «nwosu», «nkem»]

ΠœΠ΅Ρ‚ΠΎΠ΄ insert() добавляСт элСмСнт Π² любоС мСсто списка.

>>> name = [«obi», «ike», «nwosu»]
>>> name.insert(1, «nkem»)
>>> names
[«obi», «nkem», «ike», «nwosu»]



>>> name = [«obi», «ike», «nwosu»]

>>> name.insert(1, «nkem»)

>>> names

[«obi», «nkem», «ike», «nwosu»]

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ + ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π΄Π²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ списка.

>>> name = [«obi», «ike», «nwosu»]
>>> name1 = [«James»]
>>> name + name1
[«obi», «ike», «nwosu», «James»]



>>> name = [«obi», «ike», «nwosu»]

>>> name1 = [«James»]

>>> name + name1

[«obi», «ike», «nwosu», «James»]

Для просмотра всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² списка запуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ help(list).

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ

ΠšΠΎΡ€Ρ‚Π΅ΠΆ Ρ‚ΠΎΠΆΠ΅ являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ создаСтся элСмСнтами Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ запятыми:

>>> companies = «Google», «Microsoft», «Tesla»
>>> companies
(‘Google’, ‘Microsoft’, ‘Tesla’)



>>> companies = «Google», «Microsoft», «Tesla»

>>> companies

(‘Google’, ‘Microsoft’, ‘Tesla’)

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ нСпустого ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° скобки Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Π½ΠΎ ΠΎΠ½ΠΈ становятся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ большСго выраТСния. ΠŸΡƒΡΡ‚ΠΎΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ создаётся пустой ΠΏΠ°Ρ€ΠΎΠΉ скобок:

>>> companies = ()
>>> type(companies)
<class ‘tuple’>



>>> companies = ()

>>> type(companies)

<class ‘tuple’>

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом запятая Π·Π° Π½ΠΈΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°.

>>> company = «Google»,
>>> type(company)
<class ‘tuple’>

>>> company = («Google»,)
>>> type(company)
<class ‘tuple’>



>>> company = «Google»,

>>> type(company)

<class ‘tuple’>

Β 

>>> company = («Google»,)

>>> type(company)

<class ‘tuple’>

ΠŸΡ€ΠΎΠΏΡƒΡΠΊ запятой ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

>>> company = («Google»)
>>> company
‘Google’

>>> type(company)
<class ‘str’>



>>> company = («Google»)

>>> company

‘Google’

Β 

>>> type(company)

<class ‘str’>

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ списки, Π½ΠΎ нСизмСнямы.

>>> companies = («Google», «Microsoft», «Palantir»)
>>> companies[0]
‘Google’
>>> companies[0] = «Boeing»
Traceback (most recent call last):
File «<stdin>», line 1, in <module>
TypeError: ‘tuple’ object does not support item assignment



>>> companies = («Google», «Microsoft», «Palantir»)

>>> companies[0]

‘Google’

>>> companies[0] = «Boeing»

Traceback (most recent call last):

File «<stdin>», line 1, in <module>

TypeError: ‘tuple’ object does not support item assignment

Π’ Ρ‚ΠΎΠΆΠ΅ врСмя, Ссли элСмСнтом ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° являСтся измСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ список, Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.

>>> companies = ([«lockheedMartin», «Boeing»], [«Google», «Microsoft»])
>>> companies
([‘lockheedMartin’, ‘Boeing’], [‘Google’, ‘Microsoft’])
>>> companies[0].append(«SpaceX»)
>>> companies
([‘lockheedMartin’, ‘Boeing’, ‘SpaceX’], [‘Google’, ‘Microsoft’])


>>> companies = ([«lockheedMartin», «Boeing»], [«Google», «Microsoft»])

>>> companies

([‘lockheedMartin’, ‘Boeing’], [‘Google’, ‘Microsoft’])

>>> companies[0].append(«SpaceX»)

>>> companies

([

Python 3: ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ (tuple) ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π½ΠΈΠΌΠΈ: len, del, count, index

На этом занятии
ΠΌΡ‹ познакомимся с Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python – словарСм. Π’
ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ списков

ΠšΠΎΡ€Ρ‚Π΅ΠΆ – это
упорядочСнная нСизмСняСмая коллСкция ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Для задания
ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° достаточно ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ значСния Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

ΠΈΠ»ΠΈ ΠΆΠ΅, это
эквивалСнтно Ρ‚Π°ΠΊΠΎΠΉ записи:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ
Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ синтаксис:

b = 1,Β Β Β Β  ΠΈΠ»ΠΈ Β Β Β b = (1,)

Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ,
послСдняя запятая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ 1 слСдуСт Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт
ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. Если Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ просто 1, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ число.

Если Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ
ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, Ρ‚ΠΎ ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния ΠΈΠ· ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°:

Но Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΡƒΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚
ошибка, Ρ‚.ΠΊ. число Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ мСньшС числа ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Для опрСдСлСния
Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° (числа Π΅Π³ΠΎ элСмСнтов), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΆΠ΅ знакомая Π²Π°ΠΌ функция

Π”Π°Π»Π΅Π΅, доступ ΠΊ
элСмСнтам ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° осущСствляСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΊ элСмСнтам списков:

— ΠΏΠΎ индСксу:

— Ρ‡Π΅Ρ€Π΅Π· срСзы:

a[1:2]
a[0:-1]
a[:3]
a[1:]
a[:]

О срСзах ΠΌΡ‹
ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, ΠΊΠΎΠ³Π΄Π° рассматривали списки, поэтому Π½Π΅ Π²ΠΈΠΆΡƒ смысла
Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ здСсь эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ лишь Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΡ‚ такая
опСрация

Π½Π΅ создаСт копию ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° – это Π±ΡƒΠ΄ΡƒΡ‚ ссылки Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ
ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ id.

Если ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Ρ‚Π°ΠΊ
ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° списки, Ρ‚ΠΎ Π² Ρ‡Π΅ΠΌ ΠΈΡ… прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ? Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами: Π² ΠΊΠ°ΠΊΠΈΡ…
случаях слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ вмСсто списка? Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ – это
нСизмСняСмый Ρ‚ΠΈΠΏ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ списков, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅
ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ
ошибкС. Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Β«Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒΒ»
программисту ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния элСмСнтов списка. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΌΠΎΠΆΠ½ΠΎ
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρƒ словарСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

d = {}
d[a] = "ΠΊΠΎΡ€Ρ‚Π΅ΠΆ"

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…,
ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС памяти, Ρ‡Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ список, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

lst=[1,2,3]
t = (1,2,3)
print(lst.__sizeof__())
print(t.__sizeof__())

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅,
Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° мСньшС, Ρ‡Π΅ΠΌ списка. Π—Π΄Π΅ΡΡŒ использован ΠΌΠ΅Ρ‚ΠΎΠ΄ __sizeof__, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°ΠΉΡ‚Π°Ρ….

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†,
Π²-Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹Ρ…, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС, Ρ‡Π΅ΠΌ со списками,
Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ элСмСнтов ΠΈΠ»ΠΈ доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту.

ΠžΡ‚ΡΡŽΠ΄Π°
получаСтся Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: Ссли ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с нСизмСняСмым
упорядочСнным списком, Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ
пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ конструкции:

a = ()
b = tuple()
print(type(a), type(b))

Π‘ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ:
Π·Π°Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Ссли ΠΎΠ½ относится ΠΊ нСизмСняСмым Ρ‚ΠΈΠΏΠ°ΠΌ. Π’
Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΌΡ‹ лишь Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅,
Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +:

или для
добавлСния Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°:

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ
Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈ
Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅:

b = (0,)*10
b = ("hello", "world")*5

ВсС эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
Π²ΠΏΠΎΠ»Π½Π΅ допустимы.

Π”Π°Π»Π΅Π΅, функция tuple позволяСт
ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π½Π° основС Π»ΡŽΠ±Ρ‹Ρ… упорядочСнных списков:

a = tuple([1,2,3])
a = tuple("ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠΌΠΈΡ€")

И ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΈΠ·
ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список:

t = (1,2,3)
lst = list(t)

Π’Π°ΠΊΠΆΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ
ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ самыС Ρ€Π°Π·Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

a = (True, [1,2,3], "hello", 5, {"house": "Π΄ΠΎΠΌ"})

ΠŸΡ€ΠΈΡ‡Π΅ΠΌ,
смотритС, Ссли ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ списку:

Ρ‚ΠΎ сам ΠΏΠΎ сСбС
список – это измСняСмый Ρ‚ΠΈΠΏ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ ΠΌΡ‹
ΠΌΠΎΠΆΠ΅ΠΌ спокойно ΠΌΠ΅Π½ΡΡ‚ΡŒ:

Π’ΠΎ Π΅ΡΡ‚ΡŒ,
Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° относится ΠΊ Π΅Π³ΠΎ структурС элСмСнтов ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ
Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Но, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, Ρ‚ΠΎ это Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅
Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Вак как сам
ΠΊΠΎΡ€Ρ‚Π΅ΠΆ – нСизмСняСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΅Π³ΠΎ элСмСнты Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:

Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ
Π΅Π³ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ:

послС этого
ΠΊΠΎΡ€Ρ‚Π΅ΠΆ a пСрСстанСт
ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°

Π£ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°
имССтся Π΄Π²Π° Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

a = ("abc", 2, [1,2], True, 2, 5)
a.count("abc")
a.count(2)

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… элСмСнтов с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Если элСмСнт Π½Π΅
Π½Π°ΠΉΠ΄Π΅Π½:

Ρ‚ΠΎ возвращаСтся
число 0.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄:

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

позволяСт
Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ индСкс Π½Π°Ρ‡Π°Π»Π° поиска элСмСнта. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС поиск Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ
с Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ индСкса. А послСдний Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚:

опрСдСляСт
индСкс, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Ρ‚ поиск (Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΅Π³ΠΎ). Если ΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚
ошибка, Ρ‚.ΠΊ. Π² поиск Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 3-ΠΉ индСкс ΠΈ Ρ‚Π°ΠΌ Π½Π΅Ρ‚ значСния 2.

Задания для самопровСрки

1. Π”Π°Π½ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

p =
(«+792345678», «+792345478», «+792355678»,
«+592345678», «+392345678», «+7923456558»)

НуТно вывСсти
всС Π½ΠΎΠΌΠ΅Ρ€Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Β«+7Β».

2. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€
ΠΎΡ†Π΅Π½ΠΎΠΊ Π² Π²ΠΈΠ΄Π΅ строки:

«ΠžΡ†Π΅Π½ΠΊΠΈ: 5,
4, 3, 4, 2, 4, 5, 4″

НСобходимо
ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π±Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ†Π΅Π½ΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл:

(5, 4, 3, 4, 2,
4, 5, 4)

3. ВывСсти
значСния ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°:

((1,2,3),(3,4,5),(6,7,8))

Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

1 – 2 – 3

4 – 5 – 6

7 – 8 – 9

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ | Python


ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° списки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΎΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ языка Python, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ списков ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹. Π›ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ достаточно ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ элСмСнты Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ():

>>> t = (1, 2, 3, 4)
>>> t
(1, 2, 3, 4)


Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ пустых ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок:

>>> t = ()
>>> t
()
>>>
>>> type(t)
<class 'tuple'>


Но Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом, послС Π½Π΅Π³ΠΎ придСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

>>> t = (1,)
>>> t
(1,)


ПослСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ вовсС Π½Π΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Ρ‚.ΠΊ.:

>>> (1 + 1)
2


А запятыС:

>>> 1 + 1,
(2,)
>>>
>>> (1 + 1,)
(2,)


ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΎΡ‡Π΅Π½ΡŒ часто скобки Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ:

>>> t = 1, 2, 3, 4
>>> t
(1, 2, 3, 4)


Однако, Π² зависимости ΠΎΡ‚ контСкста, ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΆΠ΅ приходится, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запись Π²ΠΈΠ΄Π° func(x, y) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π° запись func((x, y)) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.


ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tuple(). Если Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

>>> t = tuple()
>>> t
()


Если ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ tuple() ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ ΠΎΠ½Π° попытаСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

>>> tuple('abcd')
('a', 'b', 'c', 'd')
>>>
>>> tuple(range(5))
(0, 1, 2, 3, 4)
>>>
>>> tuple(dict(a=1, b=2, c=3))
('a', 'b', 'c')


Ну Π° Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ tuple() ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° Π΅Π³ΠΎ повСрхностная копия.


ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΡΠ²Π»ΡΡŽΡ‚ΡΡ «Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ»

>>> (i**2 for i in range(10))
<generator object <genexpr> at 0x013DC680>


ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ извлСчСния срСза [START:STOP:STEP] (ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ списки), Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ in ΠΈ not in, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСрСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (Π΄Π»ΠΈΠ½Ρ‹) len(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ· итСрирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции for... in....




ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ


ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ, Π² ΠΎΡ‚Π»ΠΈΠ΅ ΠΎΡ‚ списков ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми:

>>> l = [0, 1, 2]
>>> l[0] = 111
>>> l
[111, 1, 2]
>>>
>>>
>>> t = (1, 2, 3)
>>> t[0] = 111
TypeError: 'tuple' object does not support item assignment


Но Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ строки, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ «ΡΡ‹Ρ€ΡŒΠ΅ΠΌ» для Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

>>> t
(1, 2, 3)
>>>
>>> t = (111,) + t[1:]
>>> t
(111, 2, 3)
>>>
>>>
>>> t = t[0:1] + (222,) + t[2:]
>>> t
(111, 222, 3)


Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ‡Ρ‚ΠΎ Π±Ρ‹ быстро ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ сначала ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² список, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ снова ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

>>> t = list(t)
>>> t[2] = 333
>>> t = tuple(t)
>>> t
(111, 222, 333)


Однако, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ являСтся нСизмСняСмым Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° сам состоит ΠΈΠ· нСизмСняСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

>>> t = (1, 2, [3, 4])
>>> 
>>> t[2][1] = 4444
>>>
>>> t
(1, 2, [3, 4444])


ИмСнно ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ словарСй ΠΈ элСмСнтами мноТСств.


Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ всСго Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: .count(x) ΠΈ .index(x).




Распаковка ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ


ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ (ΠΈ списки) ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°Π²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опСрациях присваивания:

>>> a, b, c = 1, 2, 3
>>> a, b, c
(1, 2, 3)


Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½ для ΠΎΠ±ΠΌΠ΅Π½Π° значСниями ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ:

>>> a, b, c = c, b, a
>>> a, b, c
(3, 2, 1)


Если слСва ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° = элСмСнтов мСньшС Ρ‡Π΅ΠΌ справа, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ * для указания элСмСнту ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния:

>>> *a, b, c = (1, 2, 3, 4)
>>> a, b, c
([1, 2], 3, 4)
>>>
>>> a, *b, c = (1, 2, 3, 4)
>>> a, b, c
(1, [2, 3], 4)
>>>
>>> a, b, *c = (1, 2, 3, 4)
>>> a, b, c
(1, 2, [3, 4])


ИспользованиС ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… * ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΆΠ΅ позволяСт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ слСва ΠΎΡ‚ = большС элСмСнтов Ρ‡Π΅ΠΌ справа:

>>> *a, b, c, d, e = (1, 2, 3, 4)
>>> a, b, c, d
([], 1, 2, 3)
>>>
>>> a, b, *c, d, e = (1, 2, 3, 4)
>>> a, b, c, d
(1, 2, [], 3)


ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΡƒΠΏΠ²ΠΊΠΎΠ²ΠΊΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, позволяСт ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚ΡŒ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

>>> a, b, c, x, y, z = 1, 2, 3, 4, 5, 6
>>>
>>> t1 = a, x
>>>
>>> t2 = x, c, z, b
>>>
>>> t1
(1, 4)
>>>
>>> t2
(4, 3, 6, 2)


ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ распаковки ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² конструкциях for... in...:

>>> for x, y in ((1, 2), (1, 3), (1, 4)):
...     print(x, '+', y, '=', x + y)
...
1 + 2 = 3
1 + 3 = 4
1 + 4 = 5


Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ:

>>> for x, y in zip('abcd', range(1, 5)):
...     print(x*y)
...
a
bb
ccc
dddd



Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ


ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ коллСкциями ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ языка Python, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° с индСксами элСмСнтов ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ тСряСт ΠΎΡΠΌΡ‹ΡΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ:

>>> t = (('mod_1', 8.71, (-1.32, 23.87)), ('mod_2', 5.12, (-0.41, 19.86)))
>>> t
(('mod_1', 8.71, (-1.32, 23.87)), ('mod_2', 5.12, (-0.41, 19.86)))


Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ с этим ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ цСлочислСнными индСксами:

>>> t[0][2][1]
23.87


Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ индСксам ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ осмыслСнныС обозначСния:

>>> model_1, model_2 = 0, 1
>>> name, mean, min_max = 0, 1, 2
>>> minimum, maximum = 0, 1


Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ элСмСнтам t ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ Π»ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅:

>>> t[model_1][min_max][maximum]
23.87


Но самый простой способ это использованиС встроСнного модуля collections ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Благодаря Π΅ΠΌΡƒ «ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ» ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ структуру ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅:

>>> import collections
>>>
>>> models = collections.namedtuple('models', 'model_1 model_2')
>>> params = collections.namedtuple('params', 'name mean min_max')
>>> limit = collections.namedtuple('limit', 'minimum maximum')


ΠŸΠΎΡ‚ΠΎΠΌ, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ «ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ» ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сам ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

>>> Models = models(params('mod_1', 8.71, limit(-1.32, 23.87)),
...                 params('mod_2', 5.12, limit(-0.41, 19.86)))


А Π²ΠΎΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ элСмСнты ΠΈΠ· Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ:

>>> Models.model_1.min_max.maximum
23.87


Π—Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ такая слоТная ΡˆΡ‚ΡƒΠΊΠ°? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π°, Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ написали ΡƒΡ‚Ρ€ΠΎΠΌ. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, строки докумСнтирования, ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΏΡ€ΠΈΠ·Π²Π°Π½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΈΠΌ для понимания. Π”Π°, ΠΏΠΎΡΡ‚ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅, придСтся Ρ‡ΡƒΡ‚ΡŒ дольшС, Π½ΠΎ это Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ Π½Π΅ Ρ‚Π°ΠΊ ΠΎΠ±ΠΈΠ΄Π½ΠΎ, Ρ‡Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ всС сначала, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ спустя нСдСлю смысл ΠΊΠΎΠ΄Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ забылся.









Python | ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² список списка

Π­Ρ‚ΠΎ довольно простая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ языка Python. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми, ΠΈΡ… Π½Π΅Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ списки всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ обсудим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² список списка.

ΠœΠ΅Ρ‚ΠΎΠ΄ β„– 1: ИспользованиС понимания списка
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ достигнуто с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ понимания списка. ΠœΡ‹ просто ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ список, прСобразовывая ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π² список.

Β Β 

test_list = [(1, 2), (3, 4), (5, 6)]

Β Β 

print("The original list of tuples : " + str(test_list))

Β Β 

res = [list(ele) for ele in test_list]

Β Β 

print("The converted list of list : " + str(res))

Π’Ρ‹Ρ…ΠΎΠ΄ :

The original list of tuples : [(1, 2), (3, 4), (5, 6)]
The converted list of list : [[1, 2], [3, 4], [5, 6]]

Бпособ β„– 2: ИспользованиС map() + list
ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка для выполнСния этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Ѐункция map связываСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² список.

Β Β 

test_list = [(1, 2), (3, 4), (5, 6)]

Β Β 

print("The original list of tuples : " + str(test_list))

Β Β 

res = list(map(list, test_list))

Β Β 

print("The converted list of list : " + str(res))

Π’Ρ‹Ρ…ΠΎΠ΄ :

The original list of tuples : [(1, 2), (3, 4), (5, 6)]
The converted list of list : [[1, 2], [3, 4], [5, 6]]

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ посты:

Python | ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² список списка

0.00 (0%) 0 votes

Python | ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ

ПослСднСС обновлСниС: 26.04.2017

ΠšΠΎΡ€Ρ‚Π΅ΠΆ (tuple) прСдставляСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов, которая Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° список Π·Π° Ρ‚Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ являСтся нСизмСняСмым
(immutable) Ρ‚ΠΈΠΏΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ.

Для создания ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΅Π³ΠΎ значСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми:


user = ("Tom", 23)
print(user)

Π’Π°ΠΊΠΆΠ΅ для опрСдСлСния ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ значСния Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Π±Π΅Π· примСнСния скобок:


user = "Tom", 23
print(user)

Если Π²Π΄Ρ€ΡƒΠ³ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, Ρ‚ΠΎ послС СдинствСнного элСмСнта ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°ΠΏΡΡ‚ΡƒΡŽ:


user = ("Tom",)

Для создания ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ· списка ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ список Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ tuple(), которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:


users_list = ["Tom", "Bob", "Kate"]
users_tuple = tuple(users_list)
print(users_tuple)      # ("Tom", "Bob", "Kate")

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ элСмСнтам Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ происходит Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² спискС ΠΏΠΎ индСксу. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ начинаСтся Ρ‚Π°ΠΊΠΆΠ΅ с нуля ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ элСмСнтов с Π½Π°Ρ‡Π°Π»Π° списка ΠΈ с -1 ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ элСмСнтов с ΠΊΠΎΠ½Ρ†Π° списка:


users = ("Tom", "Bob", "Sam", "Kate")
print(users[0])     # Tom
print(users[2])     # Sam
print(users[-1])     # Kate

# ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° со 2 элСмСнта ΠΏΠΎ 4
print(users[1:4])       # ("Bob", "Sam", "Kate")

Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ — нСизмСняСмый Ρ‚ΠΈΠΏ (immutable), Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ смоТСм ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ элСмСнты. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚:


users[1] = "Tim"

ΠŸΡ€ΠΈ нСобходимости ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:


user = ("Tom", 22, False)
name, age, isMarried = user
print(name)             # Tom
print(age)              # 22
print(isMarried)        # False

ОсобСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сразу нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Когда функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, фактичСски ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:


def get_user():
    name = "Tom"
    age = 22
    is_married = False
    return name, age, is_married


user = get_user()
print(user[0])              # Tom
print(user[1])              # 22
print(user[2])              # False

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ len() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°:


user = ("Tom", 22, False)
print(len(user))		# 3

ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ

Для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартныС Ρ†ΠΈΠΊΠ»Ρ‹ for ΠΈ while. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for:


user = ("Tom", 22, False)
for item in user:
    print(item)

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while:


user = ("Tom", 22, False)

i = 0
while i < len(user):
    print(user[i])
    i += 1

Как для списка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния элСмСнт in ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅:


user = ("Tom", 22, False)
name = "Tom"
if name in user:
    print("ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·ΠΎΠ²ΡƒΡ‚ Tom")
else:
    print("ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя")

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ

Один ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π² Π²ΠΈΠ΄Π΅ элСмСнтов. НапримСр:


countries = (
    ("Germany", 80.2, (("Berlin",3.326), ("Hamburg", 1.718))),
    ("France", 66, (("Paris", 2.2),("Marsel", 1.6)))
)

for country in countries:
    countryName, countryPopulation, cities = country
    print("\nCountry: {}  population: {}".format(countryName, countryPopulation))
    for city in cities:
        cityName, cityPopulation = city
        print("City: {}  population: {}".format(cityName, cityPopulation))

Π—Π΄Π΅ΡΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ countries, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт страны, состоит ΠΈΠ· ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… — ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ страна.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Ρ€ΠΈ элСмСнта: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ страны, Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΅Π΅ насСлСния ΠΈ Π³ΠΎΡ€ΠΎΠ΄Π°. Π“ΠΎΡ€ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π³ΠΎΡ€ΠΎΠ΄ — это Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ,
содСрТащий Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈ Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ насСлСния.

Python. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ. Бвойства ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅


Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

1. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ примСнСния ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ

Π’ языкС Python ΠΊΠΎΡ€Ρ‚Π΅ΠΆ – это Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², взятых Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки которая Π½Π΅ допускаСт измСнСния (Π΅ΡΡ‚ΡŒ нСизмСняСмой). ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ свойств. Π‘ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Богласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Python, общая Ρ„ΠΎΡ€ΠΌΠ° описания класса ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

class tuple([iterable])

Π³Π΄Π΅ iterable – нСкоторая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² случаях, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ фиксированныС Π½Π°Π±ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Одним ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использованиС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΊ элСмСнтам словарСй (ΠΊΠ»ΡŽΡ‡Π΅ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ). Π’Π°ΠΊΠΆΠ΅ использованиС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π΅ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° Π² Π·Π°Π΄Π°Ρ‡Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ цСлостности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ ссылки.
Если Π² Π·Π°Π΄Π°Ρ‡Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, Ρ‚ΠΎ для этих случаСв Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ списки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ.

() # пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
(2.3,'ABCDE', False) # ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· 3-Ρ… элСмСнтов Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²
('world', (2.88, "bestprog"), 3.141592) # Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
(3.88, 2,) # ΠšΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· Π΄Π²ΡƒΡ… элСмСнтов

Β  ⇑

2. Бвойства ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ

Для ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • 1. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ – это упорядочСнныС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² упорядочСны слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.
  • 2. Π’ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ… доступ ΠΊ элСмСнтам обСспСчиваСтся ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ элСмСнтов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вытягиваниС срСза, индСксированиС ΠΈ Ρ‚.ΠΏ..
  • 3. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ относятся ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ нСизмСняСмых ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ. К ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ нСпосрСдствСнного измСнСния. Однако, Ссли элСмСнтом ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π΅ΡΡ‚ΡŒ измСняСмый элСмСнт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ список), Ρ‚ΠΎ этот элСмСнт ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅.
  • 4. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹. Π’Π΅Ρ€ΠΌΠΈΠ½ Β«Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹ΠΉΒ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ составныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, списки, строки ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ.
  • 5. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • 6. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. Если Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°, Ρ‚ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ создаСтся копия ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π² Π½ΠΎΠ²ΠΎΠΌ мСстС памяти, Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ иная.
  • 7. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ массивы ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Β  ⇑

3. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΈ списками

ΠœΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΈ списками ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ отличия:

  • ΠΊΠΎΡ€Ρ‚Π΅ΠΆ формируСтся Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках (), список формируСтся Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках [];
  • ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ относятся ΠΊ нСизмСняСмым ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌ, списки относятся ΠΊ измСняСмым ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌ. К ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСпосрСдствСнно ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚. К спискам Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ;
  • ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ (количСство элСмСнтов), списки ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. Если Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию.


Β  ⇑

4. Π§Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΈ списками?

ΠœΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΈ списками ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ особСнности:

  1. Бписки ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ коллСкциями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ.
  2. Бписки ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² порядок своих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.
  3. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнты (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹) любого Ρ‚ΠΈΠΏΠ°.
  4. Π’ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ… ΠΈ списках доступ ΠΊ элСмСнтам осущСствляСтся ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ.
  5. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, основанныС Π½Π° использовании смСщСния. НапримСр, индСксированиС, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ срСза ΠΈ Ρ‚.ΠΏ.
  6. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки Π΅ΡΡ‚ΡŒ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ составныС элСмСнты (строки, списки, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ).
  7. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  8. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ массивы ссылок Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ, списками ΠΈΠ»ΠΈ строками.

Β  ⇑

5. Бпособы (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ) создания ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· 4 способов ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅.

1. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Ρ‹ пустых скобок ().

Π’ этом случаС создаСтся пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ. НапримСр

() # создаСтся пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ

2. Π’ случаС ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запятой Π² ΠΊΠΎΠ½Ρ†Π΅ элСмСнта, взятого Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.

НапримСр.

(2,)
(True, )

Β 

3. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ использования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятой ΠΈ взятых Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.

НапримСр.

(2.5, -11, 3)
(a, True, "Tuples")

Β 

4. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tuple().

НапримСр.

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ =
a = (2.5, -11, 3)
b = (a, True, "Tuples") # b = ((2.5, -11, 3), True, 'Tuples')
c = tuple(b) # c = ((2.5, -11, 3), True, 'Tuples')

Β  ⇑

6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°, содСрТащСго Ρ†Π΅Π»Ρ‹Π΅ случайныС числа
# Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 5 Ρ†Π΅Π»Ρ‹Ρ… чисСл,
# ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 10.

# Для использования случайных чисСл Π½ΡƒΠΆΠ½ΠΎ
# ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ random
import random

# 1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ список ΠΈΠ· чисСл
lst = [] # сначала пустой список
i = 0
while i < 5:
    num = random.randint(0,10)
    lst = lst + [num]
    i = i+1

# 2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· элСмСнтов списка
a = tuple(lst)

print("a = ", a) # a = (3, 0, 2, 6, 2)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

a = (4, 1, 4, 5, 7)

Β  ⇑

7. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поиска Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅
# Поиск Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅
# 1. Π—Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· строк
a = ('ab', 'abcd', 'cde', 'abc', 'def')

# 2. Π’Π²ΠΎΠ΄ искомой строки
s = str(input("s = "))

# 3. Π¦ΠΈΠΊΠ» ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°
result = False # Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
i = 0
while i < len(a): # len(a) - количСство элСмСнтов Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅
    if (a[i]==s):
        result = True
        break
    i = i+1

if (result):
    print("Yes")
else:
    print("No")

Β  ⇑

8. Ѐункция len(). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅

Для опрСдСлСния Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° (количСство элСмСнтов Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартная функция len().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

# Ѐункция len() - количСство элСмСнтов Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅

a = () # пустой ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
l = len(a) # l = 0

b = (1, 3, 7, 13, 'abc', True)
l = len(b) # l = 6

# Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
c = (a, b, "Hello", 2.33)
l = len(c) # l = 4

Β  ⇑

9. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ, Π½ΡƒΠΆΠ½ΠΎ послС элСмСнта ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ символ β€˜ , β€˜ (запятая). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ число.

НапримСр.

# ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, взятым Π² скобки () ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ.
# Число num1 ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 255
num1 = (255)
num2 = num1 + 5 # num2 = 255 + 5 = 260 - суммированиС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл

# ΠšΠΎΡ€Ρ‚Π΅ΠΆ содСрТащий число 255 - Π² ΠΊΠΎΠ½Ρ†Π΅ указываСтся запятая
A = (255,)
# B = A + 5 - Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация

Β  ⇑


БвязанныС Ρ‚Π΅ΠΌΡ‹

Β  ⇑


Β 

Β 

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ. Π£Ρ€ΠΎΠΊ 20 курса «Python. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅»

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ (tuple) Π² Python – это Ρ‚Π΅ ΠΆΠ΅ списки Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ нСизмСняСмыС структуры Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ списки ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· элСмСнтов Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², пСрСчислСнных Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅, Π° Π½Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки.

>>> a = (10, 2.13, "square", 89, 'C')
>>> a
(10, 2.13, 'square', 89, 'C')

Из ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ элСмСнты ΠΈ Π±Ρ€Π°Ρ‚ΡŒ срСзы:

>>> a[3]
89
>>> a[1:3]
(2.13, 'square')

Однако ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ элСмСнты нСльзя:

>>> a[0] = 11
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Π’Π°ΠΊΠΆΠ΅ Ρƒ Ρ‚ΠΈΠΏΠ° tuple Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для добавлСния ΠΈ удалСния элСмСнтов.

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ€Π΅Π·ΠΎΠ½Π½Ρ‹ΠΉ вопрос. Π—Π°Ρ‡Π΅ΠΌ Π² язык программирования Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎ-сути ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой нСизмСняСмый список? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ список ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΆΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π² список, Ссли это потрСбуСтся, ΠΊΠ°ΠΊ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π»Π΅Π³ΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных Π² Python Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ list() ΠΈ tuple():

>>> a = (10, 2.13, "square", 89, 'C')
>>> b = [1, 2, 3]
>>> c = list(a)
>>> d = tuple(b)
>>> c
[10, 2.13, 'square', 89, 'C']
>>> d
(1, 2, 3)

Рассмотрим случай, ΠΊΠΎΠ³Π΄Π° умСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. Π’ Python измСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ссылкС. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ создаСтся копия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ присваиваСтся ссылка Π½Π° ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ ΠΈΡ‚ΠΎΠ³Π΅, Ссли Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ измСняСтся, Ρ‚ΠΎ эти измСнСния ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ глобального ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

def addNum(seq, num):
    for i in range(len(seq)):
        seq[i] += num
    return seq

origin = [3, 6, 2, 6]
changed = addNum(origin, 3)

print(origin)
print(changed)

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ. Π₯отя Π½ΠΈΠΊΠ°ΠΊΠΈΡ… выбросов ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΎΠ½Π° содСрТит Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. На Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

[6, 9, 5, 9]
[6, 9, 5, 9]

Π’ΠΎ Π΅ΡΡ‚ΡŒ исходный список Π±Ρ‹Π» Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ seq содСрТал ссылку Π½Π΅ Π½Π° свой Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ список, Π° Π½Π° список-ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ return здСсь Π½Π΅Ρ‚ смыла. Если функция Π·Π°ΠΌΡ‹ΡΠ»ΠΈΠ²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π°Ρ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ список, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

def addNum(seq, num):
    for i in range(len(seq)):
        seq[i] += num

origin = [3, 6, 2, 6]
addNum(origin, 3)
print(origin)

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли всС ΠΆΠ΅ трСбуСтся Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ исходный список, Π° ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π½Π΅ΠΌΡƒ Π½ΠΎΠ²Ρ‹ΠΉ. Π—Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ нСсколькими способами. Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ список, послС Ρ‡Π΅Π³ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΅Π³ΠΎ:

def addNum(seq, num):
    new_seq = []
    for i in seq:
        new_seq.append(i + num)
    return new_seq

origin = [3, 6, 2, 6]
changed = addNum(origin, 3)

print(origin)
print(changed)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[3, 6, 2, 6]
[6, 9, 5, 9]

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ список Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ мСняСтся. Π•Π³ΠΎ элСмСнты лишь ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ список-ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ. Π­Ρ‚ΠΎΡ‚ способ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° функция Π½Π΅ содСрТит ΠΊΠΎΠΌΠ°Π½Π΄ измСнСния Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π₯отя ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ Π² самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π»ΡƒΡ‡ΡˆΠ΅ сразу Π΄Π΅Π»Π°Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π° Π½Π΅ ΠΏΠΎ ссылкС, Ρ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ копия структуры, Π° Π½Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». Π”Π°ΠΆΠ΅ Ссли Ρ‚ΡƒΠ΄Π° пСрСдаСтся ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π», ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. МоТно лишь, ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ, создав Ρ‚Π΅ΠΌ самым Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ структуру, ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π½Π΅ΠΉ всС, Ρ‡Ρ‚ΠΎ заблагорассудится.

def addNum(seq, num):
    seq = list(seq)
    for i in range(len(seq)):
        seq[i] += num
    return seq

origin = (3, 6, 2, 6)
changed = addNum(origin, 3)

print(origin)
print(changed)

Бписки Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ…

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ списки, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ списки Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ списки.

>>> nested = (1, "do", ["param", 10, 20])

Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ список [«param», 10, 20] Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ nested? Бписок измСняСм, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ – Π½Π΅Ρ‚. Если Π²Π°ΠΌ каТСтся, Ρ‡Ρ‚ΠΎ нСльзя, Ρ‚ΠΎ Π²Π°ΠΌ каТСтся Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. На самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ½ΠΎ:

>>> nested[2][1] = 15
>>> nested
(1, 'do', ['param', 15, 20])

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВыраТСния Ρ‚ΠΈΠΏΠ° nested[2][1] ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обращСния ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ индСкс ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ – индСкс элСмСнта Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС сам список Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 2, Π° элСмСнт списка 10 – индСкс 1 Π² спискС.

Бтранная ситуация. ΠšΠΎΡ€Ρ‚Π΅ΠΆ нСизмСняСм, Π½ΠΎ ΠΌΡ‹ всС-Ρ‚Π°ΠΊΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. На самом Π΄Π΅Π»Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ остаСтся нСизмСняСмым. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π² Π½Π΅ΠΌ содСрТится Π½Π΅ сам список, Π° ссылка Π½Π° Π½Π΅Π³ΠΎ. Π•Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСльзя. Но ΠΌΠ΅Π½ΡΡ‚ΡŒ сам список ΠΌΠΎΠΆΠ½ΠΎ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Ρ‚Π°ΠΊ:

>>> l = ["param", 10, 20]
>>> t = (1, "do", l)
>>> t
(1, 'do', ['param', 10, 20])

ΠšΠΎΡ€Ρ‚Π΅ΠΆ содСрТит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ссылку. ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ссылку нСльзя. Но ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π½Π΅ содСрТит самого списка. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ:

>>> l.pop(0)
'param'
>>> t
(1, 'do', [10, 20])

Однако ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‚Π°ΠΊΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π½Π΅ ΠΏΡ€ΠΎΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ с нСизмСняСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ:

>>> a = "Kat"
>>> t = (a, l)
>>> t
('Kat', [10, 20])
>>> a = "Bat"
>>> t
('Kat', [10, 20])

Они ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΊΠ°ΠΊ ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ – ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π’. Π΅. ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ копируСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

  1. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ измСнСния исходного списка, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ. МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ копию с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° списка copy() ΠΈΠ»ΠΈ Π²Π·ΡΡ‚ΡŒ срСз ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° [:]. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ список ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ способом ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ отраТаСтся Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅.

  2. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π΄Π΅ΡΡΡ‚ΡŒΡŽ случайными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 0 Π΄ΠΎ 5 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ числами ΠΎΡ‚ -5 Π΄ΠΎ 0. Для заполнСния ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ числами Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ Π΄Π²Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° +, создав Ρ‚Π΅ΠΌ самым Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° count() ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π² Π½Π΅ΠΌ количСство Π½ΡƒΠ»Π΅ΠΉ. Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π° экран Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈ количСство Π½ΡƒΠ»Π΅ΠΉ Π² Π½Π΅ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ€ΠΎΠΊΠΈ Π² android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ pdf-вСрсии курса

ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Python ΠΈ списки — сравнСниС списков ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ

1. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Python ΠΈ списки — Ρ†Π΅Π»ΡŒ

Π’ Π½Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… руководствах ΠΏΠΎ Python ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π² Python ΠΈ списки Π² Python. Оба ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Python. Но ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос, ΠΌΡ‹ сначала Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ углубимся Π² Π΄Π²Π΅ конструкции, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ сравнСниС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Python ΠΈ списков.

Π˜Ρ‚Π°ΠΊ, приступим ΠΊ ΡƒΡ€ΠΎΠΊΡƒ Python Tuples vs Lists Tutorial.

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Python ΠΈ списки — Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ списков ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ

2. РСдакция ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² Python

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ…. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ смотрим Π½Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.
ΠšΠΎΡ€Ρ‚Π΅ΠΆ — это Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ объявляСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок. Однако ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΈ распаковку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ значСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

 >>> числа = (1,2, 'Ρ‚Ρ€ΠΈ')
>>> числа = 4,5,6
>>> a, b, c = числа
>>> print (числа, a, b, c, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ (числа)) 

(4, 5, 6) 4 5 6 <класс "ΠΊΠΎΡ€Ρ‚Π΅ΠΆ">

ΠšΠΎΡ€Ρ‚Π΅ΠΆ возвращаСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ localtime ().

 >>> врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
>>> time.localtime () 

time.struct_time (tm_year = 2018, tm_mon = 1, tm_mday = 1, tm_hour = 23, tm_min = 1, tm_sec = 59, tm_wday = 0, tm_yday = 1, tm_isdst = 0)

Для доступа ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ индСксированиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ начинаСтся с 0.

 >>> числа [1] 

5

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ.

 >>> числа [: - 1] 

(4, 5)

НаконСц, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ вСсь ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

 >>> дСль чисСл
>>> Π½ΠΎΠΌΠ΅Ρ€Π° 

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

Π½ΠΎΠΌΠ΅Ρ€Π°

NameError: имя «числа» Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΈ списков. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ наши руководства ΠΏΠΎ Π½ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

3. ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ списков Π² Python

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C ++, Π² Python Π½Π΅Ρ‚ массивов для Ρ€Π°Π±ΠΎΡ‚Ρ‹.ВмСсто этого Ρƒ нас Π΅ΡΡ‚ΡŒ список.

ΠœΡ‹ составляСм списки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки.

 >>> colors = ['красный', 'синий', 'Π·Π΅Π»Π΅Π½Ρ‹ΠΉ'] 

Бписки Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ.

 >>> Ρ†Π²Π΅Ρ‚Π° [-2:] 

[«синий», Β«Π·Π΅Π»Π΅Π½Ρ‹ΠΉΒ»]

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡ….

 >>> Ρ†Π²Π΅Ρ‚Π° [0] = 'Ρ€ΠΎΠ·ΠΎΠ²Ρ‹ΠΉ'
>>> Ρ†Π²Π΅Ρ‚Π° 

[Β«Ρ€ΠΎΠ·ΠΎΠ²Ρ‹ΠΉΒ», «синий», Β«Π·Π΅Π»Π΅Π½Ρ‹ΠΉΒ»]

 >>> дСль Ρ†Π²Π΅Ρ‚ΠΎΠ² [0]
>>> Ρ†Π²Π΅Ρ‚Π° [0] 

«синий»

 >>> дСль Ρ†Π²Π΅Ρ‚ΠΎΠ²
>>> Ρ†Π²Π΅Ρ‚Π° 

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

Ρ†Π²Π΅Ρ‚Π°

NameError: имя Β«colorsΒ» Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ освСТили наши воспоминания, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ python ΠΈ списками.

4. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Python ΠΈ списки — ΠœΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΈ списками состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ список измСняСмый, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ список ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π½ΠΎ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

Π°. Бписок измСняСмый

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим списки. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм Π½ΠΎΠ²Ρ‹ΠΉ список.

 >>> список1 = [0,1,2,3,4,5,6,7] 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сначала ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ элСмСнт списка. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ элСмСнту Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3.

 >>> список1 [1] = 3
>>> list1 

[0, 3, 2, 3, 4, 5, 6, 7]

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ вСсь список.

 >>> список1 = [7,6,5,4,3,2,1,0]
>>> list1 

[7, 6, 5, 4, 3, 2, 1, 0]

Π­Ρ‚ΠΎ сработало, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт ΠΈΠ· списка.

 >>> список1 [1]
>>> list1 

[7, 5, 4, 3, 2, 1, 0]

Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ списка? Π”Π°Π²Π°ΠΉ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ.

 >>> del list1 [3:]
>>> list1 

[7, 5, 4]

Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ. МоТСм Π»ΠΈ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ срСз?

 >>> число = [1,2,3,4,5]
>>> число [1: 3] = [6,7,8]
>>> числа 

[1, 6, 7, 8, 4, 5]

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ. НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ вСсь список.

 >>> del list1
>>> list1 

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

список1

NameError: имя list1 Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ

Бписка большС Π½Π΅ сущСствуСт.

Π³. ΠšΠΎΡ€Ρ‚Π΅ΠΆ нСизмСняСм

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ нСизмСняСм, поэтому Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Для этого возьмСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

 >>> mytuple = 0,1,2,3,4,5,6,7 

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт.

 >>> mytuple [1] = 3 

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

mytuple [1] = 3

TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «ΠΊΠΎΡ€Ρ‚Π΅ΠΆ» Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ присвоСниС элСмСнта

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов.

Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ вСсь ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

 >>> mytuple = 2,3,4,5,6
>>> mytuple 

(2, 3, 4, 5, 6)

Π—Π°Ρ‚Π΅ΠΌ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ.

 >>> mytuple [3:] 

(5, 6)

 >>> del mytuple [3:] 

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

del mytuple [3:]

TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «ΠΊΠΎΡ€Ρ‚Π΅ΠΆ» Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта

Как Π²ΠΈΠ΄Π½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ, Π½ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ.Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.

МоТно Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт?

 >>> del mytuple [3] 

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

del mytuple [3]

TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «ΠΊΠΎΡ€Ρ‚Π΅ΠΆ» Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта

По всСй видимости, Π½Π΅Ρ‚.

НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ вСсь ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

 >>> del mytuple
>>> mytuple 

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

mytuple

NameError: имя mytuple Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ

Π˜Ρ‚Π°ΠΊ, здСсь ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

Но Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько элСмСнтов ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим большС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ Python ΠΈ списками.

5. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ python ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ ΠΎΠ±ΠΎΠΈΠΌ: arelen (), max (), min (), sum (), any (), all (), sorted (). ΠœΡ‹ рассмотрим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

 >>> макс ((1,3, -1)) 

3

 >>> макс ([1,3, -1]) 

3

6. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Бписки ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ index () ΠΈ count ().Но ΠΊΡ€ΠΎΠΌΠ΅ Π½ΠΈΡ…, Π΅ΡΡ‚ΡŒ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Ρ… ΠΊ спискам. Π­Ρ‚ΠΎ append (), insert (), remove (), pop (), clear (), sort () ΠΈ reverse (). Π”Π°Π²Π°ΠΉΡ‚Π΅ возьмСм ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ….

 >>> [1,3,2] .index (3) 

1

 >>> (1,3,2) .index (3) 

1
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдставлСниС ΠΎΠ±ΠΎ всСх этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΈ функциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ, Π²Π°ΠΌ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ нашим ΡΡ‚Π°Ρ‚ΡŒΡΠΌ ΠΎ списках ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ….

7. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π² спискС

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π² спискС, ΠΊΠΎΠ³Π΄Π° Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ.

 >>> mylist = [(1,2,3), (4,5,6)]
>>> Π²Π²Π΅Π΄ΠΈΡ‚Π΅ (ΠΌΠΎΠΉ список) 

<список "класса">

 >>> Ρ‚ΠΈΠΏ (mylist [1]) 

Но ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ? Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

[(1, Β«ABCΒ»), (2, Β«DEFΒ»), (3, Β«GHIΒ»)]

8. Бписки Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ для хранСния списков. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ.

 >>> mytuple = ([1,2], [3,4], [5,6]) 

9. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ

ΠšΠΎΡ€Ρ‚Π΅ΠΆ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² Π΄Π²ΡƒΡ… измСрСниях.

 >>> mytuple = ((1,2), (3, (4,5), (6, (7, (8,9)))))
 

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 8, ΠΌΡ‹ пишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄.

 >>> mytuple [1] [2] [1] [1] [0]
 

8

10. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ список ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большС списков Π² любом количСствС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.

 >>> mylist = [[1,2], [3,4]]
>>> myotherlist = [[1,2], [3, [4,5]]] 

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 5, ΠΌΡ‹ пишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄.

 >>> myotherlist [1] [1] [1]
 

5

11. Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, какая информация находится Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° для своСго Π²Π΅Π±-сайта.

 >>> person = ('ABC', 'admin', '12345')
 

Но Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ элСмСнты, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² массивС Π² C ++, Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ список.

 >>> бакалСя = ['Ρ…Π»Π΅Π±', 'масло', 'сыр']
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ список ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ значСния.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ список Π² качСствС ΠΊΠ»ΡŽΡ‡Π° для словаря. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ…Π΅ΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСизмСняСмыС значСния. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСизмСняСмыС значСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. Но Ссли Π²Ρ‹ всС Π΅Ρ‰Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ список Π² качСствС ΠΊΠ»ΡŽΡ‡Π°, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

Π˜Ρ‚Π°ΠΊ, это всС ΠΎ Python Tuples vs Lists. НадСюсь, Π²Π°ΠΌ понравится нашС объяснСниС.

12. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ Python ΠΈ списками, Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ слоТным.ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ список ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆ — Π½Π΅Ρ‚. Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ список, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ элСмСнты, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Π΅ΠΌ, какая информация Π² Π½Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚.

Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅? ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π°ΠΌ Π² коммСнтариях.

НомСр ссылки

.

Бписок Python ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ (с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ)

Бписки ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ хранят ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, хранящиСся Π² спискС ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΈΠΏ Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом None.

Бписки ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ

ΠΏΠΎΡ…ΠΎΠΆΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ различия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ собираСмся Π½Π°ΠΉΡ‚ΠΈ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.


Различия синтаксиса

Бинтаксис списка ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся. Бписки Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [] , Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки () .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1.1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ списка ΠΈ созданиС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°
  list_num = [1,2,3,4]
tup_num = (1,2,3,4)

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (list_num)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (tup_num)  

Π’Ρ‹Ρ…ΠΎΠ΄:

  [1,2,3,4]
(1,2,3,4)  

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ list_num , которая содСрТит список чисСл ΠΎΡ‚ 1 Π΄ΠΎ 4 . Бписок Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [] . Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ tup_num ; ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π°Π±ΠΎΡ€ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 4 .ΠšΠΎΡ€Ρ‚Π΅ΠΆ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки () .

Π’ python Ρƒ нас Π΅ΡΡ‚ΡŒ функция type () , которая Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ созданного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1.2: Найти Ρ‚ΠΈΠΏ структуры Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ type ()
  Ρ‚ΠΈΠΏ (list_num)
Ρ‚ΠΈΠΏ (tup_num)  

Π’Ρ‹Ρ…ΠΎΠ΄:

 Бписок 
ΠΊΠΎΡ€Ρ‚Π΅ΠΆ  

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΉ список ΠΏΡ€ΠΎΡ‚ΠΈΠ² нСизмСняСмых ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ

Бписок ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ список ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ послС Π΅Π³ΠΎ создания Π² соотвСтствии с потрСбностями, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ i.Π΅., ΠΊΠΎΡ€Ρ‚Π΅ΠΆ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ послС Π΅Π³ΠΎ создания.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ списка элСмСнтов ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°
  list_num [2] = 5
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (list_num)

tup_num [2] = 5  

Π’Ρ‹Ρ…ΠΎΠ΄:

  [1,2,5,4]
  Traceback (послСдний Π²Ρ‹Π·ΠΎΠ² послСдний):
 Π€Π°ΠΉΠ» "python", строка 6, Π² 
TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ 'tuple' Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ присвоСниС элСмСнта 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ присвоили 5 list_num с индСксом 2 ΠΈ нашли 5 с индСксом 2 Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ присвоили 5 tup_num с индСксом 2 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ‚ΠΈΠΏΠ° . ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ нСизмСнности.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ списка — ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ.


ДоступныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Lists ΠΈΠΌΠ΅Π΅Ρ‚ большС встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Π΅ΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ dir ([object]) , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС связанныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для списка ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3.1: Бписок ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°
  ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (list_num)  

Π’Ρ‹Ρ…ΠΎΠ΄:

  ['__add__',
'__ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ класс__',
'__содСрТит__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__Ρ„ΠΎΡ€ΠΌΠ°Ρ‚__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__я Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ__',
'__imul__',
'__Π² этом__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__reversed__',
'__rmul__',
'__setattr__',
'__setitem__',
'__Ρ€Π°Π·ΠΌΠ΅Ρ€__',
'__str__',
'__subclasshook__',
'Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ',
'Чисто',
'копия',
'ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ',
'ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ',
'индСкс',
'Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ',
'ΠΏΠΎΠΏ',
'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ',
'ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ рСгрСсс',
'sort']  
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3.2: ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ
  дирСктория (tup_num)  

Π’Ρ‹Ρ…ΠΎΠ΄:

  ['__add__',
'__ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ класс__',
'__содСрТит__',
'__delattr__',
'__dir__',
'__doc__',
'__eq__',
'__Ρ„ΠΎΡ€ΠΌΠ°Ρ‚__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getnewargs__',
'__gt__',
'__hash__',
'__Π² этом__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rmul__',
'__setattr__',
'__Ρ€Π°Π·ΠΌΠ΅Ρ€__',
'__str__',
'__subclasshook__',
'ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ',
'index']  

ΠœΡ‹ ясно Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ сущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, связанных со списком Π½Π°Π΄ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ.ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вставки ΠΈ извлСчСния, удалСния ΠΈ сортировки элСмСнтов Π² спискС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдоступны Π² Tuple.


Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‡Π΅ΠΌ Ρƒ списка, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Π½ΠΎ Π½Π΅ ΠΎ Ρ‡Π΅ΠΌ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ количСства элСмСнтов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5.1: РасчСт Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°
  Π° = (1,2,3,4,5,6,7,8,9,0)
b = [1,2,3,4,5,6,7,8,9,0]

print ('a =', a .__ sizeof __ ())
print ('b =', b.__sizeof __ ())  

Π’Ρ‹Ρ…ΠΎΠ΄:

  Π° = 104
Π± = 120  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ a ΠΈ список b с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ элСмСнтами, Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° мСньшС, Ρ‡Π΅ΠΌ список.


Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ списки всСгда ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. Но ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ — это Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…

  1. ИспользованиС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° вмСсто списка ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ программисту ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ подсказку, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ.
  2. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ эквивалСнт словаря Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр,
    [(Β«Π Ρ‹Π±Π°-ΠΌΠ΅Ρ‡Β», Β«Π”ΠΎΠΌΠΈΠ½ΠΈΠΊ Π‘Π΅Π½Π°Β», 2001 Π³.), (Β«Π‘Π½ΠΎΡƒΠ΄Π΅Π½Β», Β«ΠžΠ»ΠΈΠ²Π΅Ρ€ Π‘Ρ‚ΠΎΡƒΠ½Β», 2016 Π³.), («Ваксист», Β«ΠœΠ°Ρ€Ρ‚ΠΈΠ½ БкорсСзС», 1976 Π³.)] 

    Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ содСрТатся ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ списка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ список Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ².

  3. Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… упрощаСтся, Ссли ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ хранятся Π²Π½ΡƒΡ‚Ρ€ΠΈ списка. НапримСр,
    [(2,4), (5,7), (3,8), (5,9)] 

    Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‡Π΅ΠΌ

    [[2,4], [5,7], [3,8], [5,9]] 

ΠšΠΎΡ€Ρ‚Π΅ΠΆ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° Π² словарС ΠΈΠ·-Π·Π° ΠΈΡ… Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΈ нСизмСняСмой ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ списки Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° Π² словарС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ список Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ __hash __ () ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ.

  key_val = {('alpha', 'bravo'): 123} # Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
key_val = {['alpha', 'bravo']: 123} # НСвСрно 
 

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:

  1. Π›ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками () , Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис списков ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками [] .
  2. Бписки ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ — Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ.
  3. Бписок ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.
  4. Бписок ΠΈΠΌΠ΅Π΅Ρ‚ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Π΅ΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.

.

Python: Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ списками ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ списках ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ…, ΠΈ Π²Π°ΠΌ интСрСсно, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ?

Π­Ρ‚ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ частый вопрос.

Они ΠΎΠ±Π° Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅.

И списки, ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ элСмСнтов.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт, хранящийся Π² спискС ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

И Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ элСмСнту ΠΏΠΎ Π΅Π³ΠΎ индСксу.

Вопрос Π² Ρ‚ΠΎΠΌ, Ρ€Π°Π·Π½Ρ‹Π΅ Π»ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅?

А Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ?

Π Π°Π·Π²Π΅ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΆΠΈΡ‚ΡŒ со списками ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ?

Π§Ρ‚ΠΎ ΠΆ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ‚Π²Π΅Ρ‚.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ списком ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ списками ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ списки ΡΠ²Π»ΡΡŽΡ‚ΡΡ измСняСмыми , Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ нСизмСняСмыми .

Π§Ρ‚ΠΎ это Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, скаТСтС Π²Ρ‹?

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ python этого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.

НСизмСняСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π² дСйствии.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим список ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

  >>> a = ["яблоки", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹"]  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пытаСмся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт списка.

Π—Π°ΠΌΠ΅Π½ΠΈΠΌ «яблоки» Π½Π° «ягоды».

  >>> a [0] = "ягоды"
>>> Π°
[«ягоды», Β«Π±Π°Π½Π°Π½Ρ‹Β», Β«Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹Β»]  

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! измСнился ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.

А Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ вмСсто списка? Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим.

  >>> a = ("яблоки", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹")
>>> a [0] = "ягоды"
ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (послСдний Π²Ρ‹Π·ΠΎΠ² послСдний):
  Π€Π°ΠΉΠ» "", строка 1, Π²
TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ "ΠΊΠΎΡ€Ρ‚Π΅ΠΆ" Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов.  

. ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сообщСниС ΠΎΠ± ошибкС, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ списков, нСизмСняСмы, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° послС Π΅Π³ΠΎ создания.

Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠšΠ°Ρ€ΠΈΠΌ, ΠΌΠΎΠΉ Π΄Ρ€ΡƒΠ³, я знаю, Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ задания Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡ… написали, Π½ΠΎ ΠΊΠ°ΠΊ насчСт этого, Ρ€Π°Π·Π²Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ измСняСт a?

  >>> a = ("яблоки", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹")
>>> a = ("ягоды", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹")
>>> Π°
(«ягоды», Β«Π±Π°Π½Π°Π½Ρ‹Β», Β«Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹Β»)  

Π‘ΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²Ρ‹ΠΉ вопрос!

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΌΡ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ a с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π°?

ΠžΡ‚Π²Π΅Ρ‚: НСт, , Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ, Π²Ρ‹ сначала Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Python.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ

Π’Ρ‹, вСроятно, ΠΏΡƒΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ распространСнноС Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ срСди Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ пСрСмСнная — это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ссылка Π½Π° фактичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ python Π² памяти.

Π‘Π°ΠΌΠ° пСрСмСнная Π½Π΅ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a.

  >>> a = ["яблоки", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹"]  

ΠŸΡ€ΠΈ этом Π² памяти создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ python Ρ‚ΠΈΠΏΠ° list, Π° пСрСмСнная a ссылаСтся Π½Π° этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…Ρ€Π°Π½ΠΈΡ‚ своС мСстополоТСниС Π² памяти .

ЀактичСски, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ фактичСски ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ мСстополоТСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° списка Π² памяти, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² a с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ id ().

  >>> a = ["яблоки", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹"]
>>> id (Π°)
4340729544  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ индСкс списка ΠΈ снова ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ id (), Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ a ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ссылаСтся Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

  >>> a [0] = "ягоды"
>>> id (Π°)
4340729544  

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ послС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ.

  >>> a = ("яблоки", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹")
>>> id (Π°)
4340765824
>>> a = ("ягоды", "Π±Π°Π½Π°Π½Ρ‹", "Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹")
>>> id (Π°)
4340765464  

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, эти Π΄Π²Π° адрСса Ρ€Π°Π·Π½Ρ‹Π΅.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ присвоСния a ссылаСтся Π½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

На этом рисункС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° старый ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Ρ‚ΠΎΠ³Π΄Π° сборщик мусора python ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ старый ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· памяти.

Π˜Ρ‚Π°ΠΊ, концСпция измСнчивости — ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ списками ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ.

Π˜Π·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ — это Π½Π΅ просто концСпция Python, это концСпция языка программирования, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования.

Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, вся эта дискуссия Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π² вашСй Π³ΠΎΠ»ΠΎΠ²Π΅ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ вопрос.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ измСняСмыС ΠΈ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹?

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ измСняСмыС ΠΈ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹?

На самом Π΄Π΅Π»Π΅, ΠΎΠ½ΠΈ ΠΎΠ±Π° слуТат Ρ€Π°Π·Π½Ρ‹ΠΌ цСлям.

Π”Π°Π²Π°ΠΉΡ‚Π΅ обсудим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ измСняСмыС ΠΈ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ /

1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивна, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ часто ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (скаТСм, x), ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт x Π² список.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ L = list (x), Π½ΠΎ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ это прСобразуСтся Π² Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  L = []
для элСмСнта Π² x:
    L.append (item)  

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π’Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка Π½Π° мСстС Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° всС элСмСнты x Π½Π΅ появятся Π² спискС L.

Но ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π±Ρ‹, Ссли Π±Ρ‹ вмСсто этого ΠΌΡ‹ использовали ΠΊΠΎΡ€Ρ‚Π΅ΠΆ?

  Π’ = ()
для элСмСнта Π² x:
    T = T + (item,)  

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС, Ρ‡Ρ‚ΠΎ происходит Π² памяти?

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ нСизмСняСмы, Π²Ρ‹ Π² основном ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ содСрТимоС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° T Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π½Π° ΠšΠΠ–Π”ΠžΠ™ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ .

Если Ρ†ΠΈΠΊΠ» for большой, это огромная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

На самом Π΄Π΅Π»Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ python для измСрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ добавлСния Π² список ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, ΠΊΠΎΠ³Π΄Π° x = range (10000).

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ timeit для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк Python.

  $ python3 -m timeit \
-s "L = []" \
-s "x = Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (10000)" \
"для элСмСнта Π² x:" "L.append (элСмСнт)"
1000 Ρ†ΠΈΠΊΠ»ΠΎΠ², Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· 3: 1,08 мс Π½Π° Ρ†ΠΈΠΊΠ»  

Cool, 1.08 миллисСкунды .

А Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ сдСлаСм Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ?

  $ python3 -m timeit \
-s "T = ()" -s "x = Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (10000)" \
"для элСмСнта Π² x:" "T = T + (элСмСнт,)"
10 Ρ†ΠΈΠΊΠ»ΠΎΠ², Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· 3: 1,63 сСкунды Π½Π° Ρ†ΠΈΠΊΠ»  

ΠšΠΎΠ»ΠΎΡΡΠ°Π»ΡŒΠ½Ρ‹Π΅ 1,63 сСкунды !

Π­Ρ‚ΠΎ огромная Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ списками ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ своС Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ x = range (1000000).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ string нСэффСктивно, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ (строковыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ нСизмСняСмы Π² python).

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠŸΠΎΠ±Π΅Π΄Ρ‹ ΠΏΠΎ измСнчивости!

2. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ — это ΠΊΡ€ΡƒΡ‚ΠΎ, ΠΈ всС, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‰ΠΈ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Ρ‚ΡŒ измСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, — это ΠΎΡ‚Π»Π°Π΄ΠΊΠ°.

Π§Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ?

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° этот ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

  >>> a = [1, 3, 5, 7]
>>> Π± = Π°
>>> b [0] = -10
>>> Π°
[-10, 3, 5, 7]  

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ b = a, ΠΌΡ‹ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка ΠΈΠ· b Π² a.

ЀактичСски ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ python, Ρ‡Ρ‚ΠΎ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ a ΠΈ b Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ a эффСктивно ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мСстополоТСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Python Π² памяти, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ b = a, Π²Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ это адрСсноС мСсто (Π½Π΅ фактичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) Π² b.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π΄Π²ΡƒΡ… ссылок (a ΠΈ b) Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ b [0] = -10, это ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ эффСкт, Ρ‡Ρ‚ΠΎ ΠΈ a [0] = -10.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΊΠΎΠ΄ ΠΈ справСдливо ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎ ΠΆ, Π²Ρ‹ ΠΏΡ€Π°Π²Ρ‹ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… этому, Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ со мноТСством ссылок Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ измСняСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠžΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ всС измСнСния этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ слоТно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ любой ΠΈΠ· этих ссылок ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ измСнСнию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π­Ρ‚ΠΎ Π½Π΅ относится ΠΊ нСизмСняСмым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Π΄Π°ΠΆΠ΅ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько ссылок Π½Π° Π½ΠΈΡ….

ПослС создания нСизмСняСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅Π³ΠΎ содСрТимоС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ измСнится.

Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ: ΠŸΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ‚ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ!

3.Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ памяти

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ прСимущСство нСизмСняСмости состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° позволяСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ΄ этим.

Π’ CPython (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярная рСализация Python), Ссли Π²Ρ‹ создаСтС нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, содСрТащиС ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, python (ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ эти Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΎΠ΄ΠΈΠ½.

НапримСр, взглянитС Π½Π° этот ΠΊΠΎΠ΄:

  >>> a = "Karim"
>>> b = "ΠšΠ°Ρ€ΠΈΠΌ"
>>> id (Π°)
4364823608
>>> id (b)
4364823608  

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ строки (Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ†Π΅Π»Ρ‹Π΅ числа, числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈ логичСскиС значСния) Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ нСизмСняСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, хотя Π² нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° python ΠΌΡ‹ явно создали Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, python Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ объСдинил ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½.

ΠžΡ‚ΠΊΡƒΠ΄Π° ΠΌΡ‹ это ΡƒΠ·Π½Π°Π»ΠΈ?

Ну, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ a Π² точности такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ b.

Python смог это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ строк Π΄Π΅Π»Π°Π΅Ρ‚ бСзопасным Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого связывания.

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сэкономит Π½Π°ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒ (Π½Π΅ сохраняя строку нСсколько Ρ€Π°Π· Π² памяти), Π½ΠΎ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, python просто создаст ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ сущСствуСт Π² памяти, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивно.

Π­Ρ‚Π° концСпция называСтся String Interning, ΠΈ это отличная ΡΡ‚Π°Ρ‚ΡŒΡ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅Π΅.

НС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ струны. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ относится ΠΊ Ρ†Π΅Π»Ρ‹ΠΌ числам (ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях).

  >>> Π° = 1
>>> b = 1
>>> id (Π°)
4305324416
>>> id (b)
4305324416  

ΠšΡ€ΡƒΡ‚ΠΎ, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ?

А ΠΊΠ°ΠΊ насчСт ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ?

CPython Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° python 3.6 Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ дизайнСрскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ автоматичСски Π΄Π²Π° эквивалСнтных ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π² ΠΎΠ΄ΠΈΠ½.

  >>> a = (1, 2)
>>> b = (1, 2)
>>> id (Π°)
4364806856
>>> id (b)
4364806920  

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ a отличаСтся ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° b.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысл, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для выполнСния интСрнирования ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС элСмСнты ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° сами ΠΏΠΎ сСбС Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ памяти: ΠŸΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ‚ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ списками Python ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ измСнчивости / нСизмСняСмости.

Бписки — это измСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка послС Π΅Π³ΠΎ создания.

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° послС Π΅Π³ΠΎ создания.

И ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ свои прСимущСства ΠΈ нСдостатки.

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python?

ЗаглянитС Π² Ρ€Π°Π·Π΄Π΅Π» ΠšΡƒΡ€ΡΡ‹!

Π˜Π·Π±Ρ€Π°Π½Π½Ρ‹Π΅ сообщСния

Π’Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ свою ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ Π² области программирования?

Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ свои Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Π±ΡŽΠ»Π»Π΅Ρ‚Π΅Π½Π΅.

  • Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, срСднСго ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ.
  • CS Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π΅.
  • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ скидки Π½Π° ΠΌΠΎΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ курсы ΠΏΡ€ΠΈ ΠΈΡ… запускС.

И ΠΌΠ½ΠΎΠ³ΠΎΠ΅ другоС…

ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ сСйчас. Π­Ρ‚ΠΎ бСсплатно.

.

списков ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Python — DZone с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ

Π’ этом постС ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ создании списков ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Python ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Бписки Python

Бписки Π² Python — это просто массив. Π’ΠΎΡ‚ основной список ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… классов WoW:

  awesomeList = ['ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'Π²ΠΎΠΈΠ½', 'Π΄Ρ€ΡƒΠΈΠ΄']  

Бписки ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скобок []

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ† нашСго списка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ append () :

  Π’ [6]: awesomeList.append ("Ρ‡Π΅Ρ€Π½ΠΎΠΊΠ½ΠΈΠΆΠ½ΠΈΠΊ")

Π’ [7]: awesomeList
Out [7]: ['ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'Π²ΠΎΠΈΠ½', 'Π΄Ρ€ΡƒΠΈΠ΄', 'Ρ‡Π΅Ρ€Π½ΠΎΠΊΠ½ΠΈΠΆΠ½ΠΈΠΊ']  

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π² спискС ΠΈΠΌΠ΅ΡŽΡ‚ индСкс, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с 0, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся смСщСниСм. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты Π² нашСм спискС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  Π’ [7]: awesomeList
Out [7]: ['ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'Π²ΠΎΠΈΠ½', 'Π΄Ρ€ΡƒΠΈΠ΄', 'Ρ‡Π΅Ρ€Π½ΠΎΠΊΠ½ΠΈΠΆΠ½ΠΈΠΊ']

Π’ [8]: awesomeList [0]
Out [8]: 'ΠΏΠ°Π»Π°Π΄ΠΈΠ½'

Π’ [9]: awesomeList [3]
Out [9]: 'Π²ΠΎΠΈΠ½'  

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ элСмСнты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΆΠ΅ смСщСниС:

  Π’ [10]: awesomeList [3] = "ΠΌΠΎΠ½Π°Ρ…"

Π’ [11]: awesomeList
Out [11]: ['ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'ΠΌΠΎΠ½Π°Ρ…', 'Π΄Ρ€ΡƒΠΈΠ΄', 'Ρ‡Π΅Ρ€Π½ΠΎΠΊΠ½ΠΈΠΆΠ½ΠΈΠΊ']  

НаконСц, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнты ΠΈΠ· списка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ remove () :

  Π’ [12]: awesomeList.ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ('ΠΌΠΎΠ½Π°Ρ…')

Π’ [13]: awesomeList
Out [13]: ['ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'Π΄Ρ€ΡƒΠΈΠ΄', 'Ρ‡Π΅Ρ€Π½ΠΎΠΊΠ½ΠΈΠΆΠ½ΠΈΠΊ']  

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ нСсколько списков, Π½ΠΎ этого Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно для Ρ†Π΅Π»Π΅ΠΉ этой ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΈΠ· справочной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Python, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Π’ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ:

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Python

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° списки, Π½ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ нСизмСняСмы. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послС ΠΈΡ… создания Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ списка классов WoW Π²Ρ‹ΡˆΠ΅.

  Π’ [14]: awesomeTuple = ('ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'Π²ΠΎΠΈΠ½', 'Π΄Ρ€ΡƒΠΈΠ΄')

Π’ [15]: awesomeTuple
Out [15]: ('ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'Π²ΠΎΠΈΠ½', 'Π΄Ρ€ΡƒΠΈΠ΄')  

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Β«Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒΒ» значСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  Π’ [16]: belkas, gorkin, landril, maxilum, ferral = awesomeTuple

Π’ [17]: бСлкас
Out [17]: 'ΠΏΠ°Π»Π°Π΄ΠΈΠ½'

Π’ [18]: максилум
Out [18]: 'Π²ΠΎΠΈΠ½'
  

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· списка.

  Π’ [20]: ΠΊΠΎΡ€Ρ‚Π΅ΠΆ (awesomeList)
Out [20]: ('ΠΏΠ°Π»Π°Π΄ΠΈΠ½', 'мошСнник', 'свящСнник', 'Π΄Ρ€ΡƒΠΈΠ΄', 'Ρ‡Π΅Ρ€Π½ΠΎΠΊΠ½ΠΈΠΆΠ½ΠΈΠΊ')  

ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ со справочной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Python для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ….

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² списки ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Python, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ сути этого руководства.

Python Бписки ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ списки ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π²Π΅Ρ‰Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»Ρ‹ ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ².

Допустим, ΠΌΡ‹ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ„Π°ΠΉΠ» ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ состояния ΠΈ сообщСниС ΠΈΠ· Π²Π΅Π±-ΠΆΡƒΡ€Π½Π°Π»Π° Apache2.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ списков ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Python. Π’ΠΎΡ‚ слишком ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  Π’ [21]: ΠΆΡƒΡ€Π½Π°Π»Ρ‹ = [
    ...: ('HTTP_OK', 'ΠŸΠžΠ›Π£Π§Π˜Π’Π¬ /index.html'),
    ...: ('HTTP_NOT_FOUND', 'ΠŸΠžΠ›Π£Π§Π˜Π’Π¬ /index.htmll')
    ...:]  

Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ довольно интСрСсныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ количСство ошибок.

  Π’ [29]: errorCount = 0
    ...: для Π²Ρ…ΠΎΠ΄Π° Π² ΠΆΡƒΡ€Π½Π°Π»Ρ‹:
    ...: статус, сообщСниС = ΠΆΡƒΡ€Π½Π°Π»
    ...: Ссли статус Π½Π΅ HTTP_OK:
    ...: errorCount + = 1
    ...:

Π’ [30]: errorCount
Π’Ρ‹Ρ… [30]: 1
  

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ вмСсто списков? ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСньшС мСста для ΠΎΠ΄Π½ΠΎΠ³ΠΎ.Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ„Π°ΠΉΠ»Π° ΠΆΡƒΡ€Π½Π°Π»Π°, Ссли Ρ„Π°ΠΉΠ» ΠΆΡƒΡ€Π½Π°Π»Π° большой, Ρ‚ΠΎ использованиС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ объСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ памяти.

НадСюсь, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ эта ΡΡ‚Π°Ρ‚ΡŒΡ.

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *