ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ списками

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ ΠΈΡ‚ΠΎΠ³Π΅ нСбольшая функция ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΡ… ΠΊΠ»Π°ΡΡΠ° (Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…). ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ in ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ со ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΡΠΏΠΈΡΠΊΡƒ: Π”ΠΎ Π½Π°ΡΡ‚оящСго ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (классы). ВспомнитС, ΠΊΠ°ΠΊ Python ругался ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ экспСримСнт ΠΏΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡŽ списка: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ g ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ся адрСс Π½ΠΎΠ²ΠΎΠ³ΠΎ списка… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ списками (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠžΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам списка ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΈΡ… индСксу (ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ), начиная с Π½ΡƒΠ»Ρ (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ со ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌΠΈ):

«> Π΅ = [56.8060, 57.1578, 57.4093, 56.1843, 57.2207].

>" Π΅ [ 0 ].

  • 56.806 >>> Π΅[1]
  • 57.1578

>" Π΅[-1] # послСдний элСмСнт.

57.2207.

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΎΡˆΠΈΠ±ΠΊΠ΅ IndexError:

>" Π΅[100].

Traceback (most recent call last):

File «», line 1, in e[100].

IndexError: list index out of range.

Π”ΠΎ Π½Π°ΡΡ‚оящСго ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (классы). ВспомнитС, ΠΊΠ°ΠΊ Python ругался ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ экспСримСнт ΠΏΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡŽ списка:

>>> h = ['Hi', 27, -8.1, [1,2]] # созданиС списка >>> h[l] = 'hello' # ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ элСмСнта списка Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 1 >>> h # Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ список ['Hi', 'hello', -8.1, [1, 2]].

>" h [ 1 ] # ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ элСмСнт списка 'hello'.

На Ρ€ΠΈΡ. 4.29 прСдставлСна схСма памяти Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания списка h.

Π‘Ρ…Π΅ΠΌΠ° памяти Python ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со списком.

Рис. 4.29. Π‘Ρ…Π΅ΠΌΠ° памяти Python ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ΡΠΏΠΈΡΠΊΠΎΠΌ.

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ списка:

«> h[ 1 ] = 'hello'.

>>> h.

['bonjour', 'hello', 'hola', 'aloha', 'ΠΏΡ€ΠΈΠ²1Ρ‚'].

«> h [1].

'hello'.

Π‘Ρ…Π΅ΠΌΠ° памяти Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ измСнСния списка ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Ρ€ΠΈΡ. 4.30.

Π’ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ создаСтся Π½ΠΎΠ²Ρ‹ΠΉ строковый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€˜hello'. Π—Π°Ρ‚Π΅ΠΌ адрСс этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° {idl) помСщаСтся Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ячСйку списка (вмСсто адрСса id2). Python ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ id2 большС Π½Π΅Ρ‚ ссылок, поэтому ΡƒΠ΄Π°Π»ΠΈΡ‚ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ (ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ сборку мусора).

Π‘Ρ…Π΅ΠΌΠ° памяти Python Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ измСнСния списка.

Рис. 4.30. Π‘Ρ…Π΅ΠΌΠ° памяти Python Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ измСнСния списка

Бписок, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ приходится ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π­Ρ‚ΠΎ связано со Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² Python функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ списки:

  • β€’ len (L) — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число элСмСнтов Π² ΡΠΏΠΈΡΠΊΠ΅ L;
  • β€’ max (L) — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ L;
  • β€’ min (L) — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ L;
  • β€’ sum (L) — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅ L;
  • β€’ sorted (L) — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию списка L, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ элСмСнты упорядочСны ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. НС ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ список L.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ:

«> Π΅ = [56.8060, 57.1578, 57.4093, 56.1843, 57.2207].

>>> Π΅.

[56.806, 57.1578, 57.4093, 56.1843, 57.2207].

>>> 1Π΅ΠΏ (Π΅).

>" Ρ‚Π°Ρ… (Π΅).

  • 57.4093 >>> min (e)
  • 56.1843 >" sum (e)
  • 284.7781 >>> sorted (Π΅)

[56.1843, 56.806, 57.1578, 57.2207, 57.4093].

>>> Π΅.

[56.806, 57.1578, 57.4093, 56.1843, 57.2207].

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «+», ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊ ΡΠΏΠΈΡΠΊΠ°ΠΌ, слуТит для ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (вспомнитС строки):

«> original = [ ' Н', ' Π’' ].

>>> final = original + [ 'Π’*].

>>> final [ * Н ', β€’ Π’ ', 1 Π’1 ].

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ повторСния (вновь Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ аналогия со ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌΠΈ):

>>> final = final * 5 «> final.

[‒Н1, 'Π’', * Π’', 'Н', 'Π’', 'Π’', 'Н', 'Π’', 'Π’', 'Н', 'Π’',.

?Π’', ? Π½ ?, ' Π² ?, β€’ Ρ‚? ].

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ del позволяСт ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° элСмСнты ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ индСксу (это инструкция, поэтому скобки Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ):

>>> del final[0].

>>> final.

['Π’', ' Π’', 1Н',? Π’', «Π“1, β€’ Н ', 'Π’β€’, β€’ Π’ 1, ‒Н', 'Π’', 'Π’1,.

? Π½ β€’, β€’ Π² ?, ' Π’' ].

Рассмотрим интСрСсный ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ f, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΡƒΡŽ Π΄Π²Π° списка:

«> del f (Ρ…, Ρƒ): return Ρ… + Ρƒ.

«> f ([1, 2, 3], [4, 5, 6]).

[1, 2, 3, 4, 5, 6].

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f Π΄Π²Π΅ строки:

«> f («123», «456»).

' 123 456'.

Π”Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f Π΄Π²Π° числа:

>" f (1, 2).

Π’ ΠΈΡ‚ΠΎΠ³Π΅ нСбольшая функция ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΡ… ΠΊΠ»Π°ΡΡΠ° (Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…). ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ in ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ со ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΡΠΏΠΈΡΠΊΡƒ:

«> h = ['bonjour1, 7, 'hola', -1.0, 'ΠΏΡ€ΠΈΠ²1Ρ‚'].

«> if 7 in h:

print{1 Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅ΡΡ‚ΡŒ Π² ΡΠΏΠΈΡΠΊΠ΅').

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅ΡΡ‚ΡŒ Π² ΡΠΏΠΈΡΠΊΠ΅ Аналогично строкам, для списка сущСствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ извлСчСния срСза:

«> h = ['bonjour1, 7, 'hola', -1.0, 'ΠΏΡ€ΠΈΠ²1Ρ‚'].

«> h.

['bonjour', 7, 'hola', -1.0, 'ΠΏΡ€ΠΈΠ²1Ρ‚'].

«> g = h [1:2].

>>> g [7].

Π‘Ρ…Π΅ΠΌΠ° памяти ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡΡ€Π΅Π·Π°ΠΌ прСдставлСна Π½Π° Ρ€ΠΈΡ. 4.31.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ g ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ся адрСс Π½ΠΎΠ²ΠΎΠ³ΠΎ списка (id7), содСрТащСго ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСза.

Π‘Ρ…Π΅ΠΌΠ° памяти Python ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со срСзами.

Рис. 431. Π‘Ρ…Π΅ΠΌΠ° памяти Python ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ΡΡ€Π΅Π·Π°ΠΌΠΈ

ВСрнСмся ΠΊ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ del ΠΈ ΡƒΠ΄Π°Π»ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСза подсписок:

«> Π° = [-1, 1, 66.25, 333, 333, 1234.5].

>" del Π°[0].

>>> Π°.

[1, 66.25, 333, 333, 1234.5].

>>> del Π°[2:4] # ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ подсписка.

>>>Π°.

[1, 66.25, 1234.5].

>>> del Π°[:].

>" Π°.

[].

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ