|
|||||||||||||||||
import os 2 страница
К о р т е ж и о б о з н а ч а ю т с я у к а з а н и е м э л е м е н т о в, р а з д е л ё н н ы х з а п я т ы м и; п о ж е л а н и ю и х м о ж н о е щ ё з а к л ю ч и т ь в к р у г л ы е с к о б к и.
К о р т е ж и о б ы ч н о и с п о л ь з у ю т с я в т е х с л у ч а я х, к о г д а о п е р а т о р и л и п о л ь з о в а т е л ь с к а я ф у н к -ц и я д о л ж н ы н а в е р н я к а з н а т ь, ч т о н а б о р з н а ч е н и й, т. е. к о р т е ж з н а ч е н и й, н е и з м е н и т с я.
П р и м е р: (с о х р а н и т е к а к using_tuple. py)
zoo = ('п и т о н ', 'с л о н ', 'п и н г в и н ') # п о м н и т е, ч т о с к о б к и н е о б я з а т е л ь н ы print ('К о л и ч е с т в о ж и в о т н ы х в з о о п а р к е -', len(zoo))
12. 3. К о р т е ж 81 A Byte of Python (Russian), В е р с и я 2. 01
new_zoo = 'о б е з ь я н а ', 'в е р б л ю д ', zoo
print ('К о л и ч е с т в о к л е т о к в з о о п а р к е -', len(new_zoo))
print ('В с е ж и в о т н ы е в н о в о м з о о п а р к е: ', new_zoo)
print ('Ж и в о т н ы е, п р и в е з ё н н ы е и з с т а р о г о з о о п а р к а: ', new_zoo[2])
print ('П о с л е д н е е ж и в о т н о е, п р и в е з ё н н о е и з с т а р о г о з о о п а р к а -', new_zoo[2][2])
print ('К о л и ч е с т в о ж и в о т н ы х в н о в о м з о о п а р к е -', len(new_zoo)-1+len(new_zoo[2]))
В ы в о д:
$ python3 using_tuple. py
К о л и ч е с т в о ж и в о т н ы х в з о о п а р к е - 3
К о л и ч е с т в о к л е т о к в з о о п а р к е - 3
В с е ж и в о т н ы е в н о в о м з о о п а р к е: ('о б е з ь я н а ', 'в е р б л ю д ', ('п и т о н ', 'с л о н ', 'п и н г в и н ')) Ж и в о т н ы е, п р и в е з ё н н ы е и з с т а р о г о з о о п а р к а: ('п и т о н ', 'с л о н ', 'п и н г в и н ') П о с л е д н е е ж и в о т н о е, п р и в е з ё н н о е и з с т а р о г о з о о п а р к а - п и н г в и н К о л и ч е с т в о ж и в о т н ы х в н о в о м з о о п а р к е - 5
К а к э т о р а б о т а е т:
П е р е м е н н а я zoo о б о з н а ч а е т к о р т е ж э л е м е н т о в. К а к м ы в и д и м, ф у н к ц и я len п о з в о л я е т п о л у ч и т ь д л и н у к о р т е ж а. Э т о т а к ж е у к а з ы в а е т н а т о, ч т о к о р т е ж я в л я е т с я п о с л е д о в а т е л ь н о с т ь ю .
Т е п е р ь м ы п е р е м е щ а е м э т и х ж и в о т н ы х в н о в ы й з о о п а р к, п о с к о л ь к у с т а р ы й з о о п а р к з а к р ы в а е т с я. П о э т о м у к о р т е ж new_zoo с о д е р ж и т т е х ж и в о т н ы х, к о т о -р ы е у ж е т а м, н а р я д у с п р и в е з ё н н ы м и и з с т а р о г о з о о п а р к а. В о з в р а щ а я с ь к р е -а л ь н о с т и, о б р а т и т е в н и м а н и е н а т о, ч т о к о р т е ж в н у т р и к о р т е ж а н е т е р я е т с в о -е й и н д и в и д у а л ь н о с т и.
Д о с т у п к э л е м е н т а м к о р т е ж а о с у щ е с т в л я е т с я у к а з а н и е м п о з и ц и и э л е м е н т а, з а к л ю ч ё н н о й в к в а д р а т н ы е с к о б к и – т о ч н о т а к ж е, к а к м ы э т о д е л а л и д л я с п и с -к о в. Э т о н а з ы в а е т с я о п е р а т о р о м и н д е к с и р о в а н и я . Д о с т у п к т р е т ь е м у э л е м е н т у new_zoo м ы п о л у ч а е м, у к а з ы в а я new_zoo[2], а д о с т у п к т р е т ь е м у э л е м е н т у в н у т р и т р е т ь е г о э л е м е н т а в к о р т е ж е new_zoo – у к а з ы в а я new_zoo[2][2]. Э т о д о с т а т о ч н о п р о с т о, к а к т о л ь к о в ы п о й м ё т е п р и н ц и п.
С к о б к и
Х о т я с к о б к и и н е я в л я ю т с я о б я з а т е л ь н ы м и, я п р е д п о ч и т а ю в с е г д а у к а з ы в а т ь и х, ч т о -б ы б ы л о о ч е в и д н о, ч т о э т о к о р т е ж, о с о б е н н о в д в у с м ы с л е н н ы х с л у ч а я х. Н а п р и м е р, “print(1, 2, 3)” и “print( (1, 2, 3) )” д е л а ю т р а з н ы е в е щ и: п е р в о е в ы р а ж е н и е в ы в о д и т т р и ч и с л а, т о г д а к а к в т о р о е – к о р т е ж, с о д е р ж а щ и й э т и т р и ч и с л а.
К о р т е ж, с о д е р ж а щ и й 0 и л и 1 э л е м е н т
П у с т о й к о р т е ж с о з д а ё т с я п р и п о м о щ и п у с т о й п а р ы с к о б о к – “myempty = ()”. О д н а к о, с к о р т е ж е м и з о д н о г о э л е м е н т а н е в с ё т а к п р о с т о. Е г о н у ж н о у к а з ы в а т ь п р и п о м о щ и з а -
82 Г л а в а 12. С т р у к т у р ы д а н н ы х A Byte of Python (Russian), В е р с и я 2. 01
п я т о й п о с л е п е р в о г о (и е д и н с т в е н н о г о ) э л е м е н т а, ч т о б ы Python м о г о т л и ч и т ь к о р т е ж о т с к о б о к, о к р у ж а ю щ и х о б ъ е к т в в ы р а ж е н и и. Т а к и м о б р а з о м, ч т о б ы п о л у ч и т ь к о р т е ж, с о -д е р ж а щ и й э л е м е н т 2, в а м п о т р е б у е т с я у к а з а т ь “singleton = (2, )”.
З а м е ч а н и е д л я п р о г р а м м и с т о в н а Perl
С п и с о к в н у т р и с п и с к а н е т е р я е т с в о е й и н д и в и д у а л ь н о с т и, т. е. с п и с к и н е р а з в ё р т ы в а ю т с я, к а к в Perl. Э т о ж е о т н о с и т с я к к о р т е ж у в н у т р и к о р т е ж а, и л и к о р т е ж у в н у т р и с п и с к а, и л и с п и с к у в н у т р и к о р т е ж а и т. д. В Python в с е о н и р а с с м а т р и в а ю т с я к а к о б ъ е к т ы, х р а н я щ и е с я в н у т р и д р у г о г о о б ъ е к т а – т о л ь к о и в с е г о.
12. 4 С л о в а р ь
С л о в а р ь – э т о н е к и й а н а л о г а д р е с н о й к н и г и, в к о т о р о й м о ж н о н а й т и а д р е с и л и к о н т а к т -н у ю и н ф о р м а ц и ю о ч е л о в е к е, з н а я л и ш ь е г о и м я; т. е. н е к о т о р ы е к л ю ч и (и м е н а ) с в я з а н ы с о з н а ч е н и я м и (и н ф о р м а ц и е й ). З а м е т ь т е, ч т о к л ю ч д о л ж е н б ы т ь у н и к а л ь н ы м – в ы в е д ь н е с м о ж е т е п о л у ч и т ь к о р р е к т н у ю и н ф о р м а ц и ю, е с л и у в а с з а п и с а н ы д в а ч е л о в е к а с п о л -н о с т ь ю о д и н а к о в ы м и и м е н а м и.
О б р а т и т е т а к ж е в н и м а н и е н а т о, ч т о в с л о в а р я х в к а ч е с т в е к л ю ч е й м о г у т и с п о л ь з о в а т ь с я т о л ь к о н е и з м е н я е м ы е о б ъ е к т ы (к а к с т р о к и ), а в к а ч е с т в е з н а ч е н и й м о ж н о и с п о л ь з о в а т ь к а к н е и з м е н я е м ы е, т а к и и з м е н я е м ы е о б ъ е к т ы. Т о ч н е е г о в о р я, в к а ч е с т в е к л ю ч е й д о л ж н ы и с п о л ь з о в а т ь с я т о л ь к о п р о с т ы е о б ъ е к т ы.
П а р ы к л ю ч -з н а ч е н и е у к а з ы в а ю т с я в с л о в а р е с л е д у ю щ и м о б р а з о м: “d = {key1: value1, key2: value2 }”. О б р а т и т е в н и м а н и е, ч т о к л ю ч и з н а ч е н и е р а з д е л я ю т с я д в о е т о ч и е м, а п а р ы д р у г о т д р у г а о т д е л я ю т с я з а п я т ы м и, а з а т е м в с ё э т о з а к л ю ч а е т с я в ф и г у р н ы е с к о б к и.
П о м н и т е, ч т о п а р ы к л ю ч -з н а ч е н и е н и к о и м о б р а з о м н е у п о р я д о ч е н ы в с л о в а р е. Е с л и в а м н е о б х о д и м н е к о т о р ы й п о р я д о к, в а м п р и д ё т с я о т д е л ь н о о т с о р т и р о в а т ь с л о в а р ь п е р е д о б -р а щ е н и е м к н е м у.
С л о в а р и я в л я ю т с я э к з е м п л я р а м и /о б ъ е к т а м и к л а с с а dict.
П р и м е р: (с о х р а н и т е к а к using_dict. py)
# 'ab' - с о к р а щ е н и е о т 'a'ddress'b'ook
print (" А д р е с Swaroop'а: ", ab['Swaroop'])
# У д а л е н и е п а р ы к л ю ч -з н а ч е н и е
12. 4. С л о в а р ь 83 A Byte of Python (Russian), В е р с и я 2. 01
del ab['Spammer']
print (' \n В а д р е с н о й к н и г е {0}к о н т а к т о в \n '. format(len(ab)))
for name, address in ab. items():
print ('К о н т а к т {0}с а д р е с о м {1}'. format(name, address))
Д о б а в л е н и е п а р ы к л ю ч -з н а ч е н и е
ab['Guido'] = 'guido@python. org'
if 'Guido' in ab:
print (" \n А д р е с Guido: ", ab['Guido'])
В ы в о д:
$ python3 using_dict. py
А д р е с Swaroop'а: swaroop@swaroopch. com
В а д р е с н о й к н и г е 3 к о н т а к т о в
К о н т а к т Swaroop с а д р е с о м swaroop@swaroopch. com К о н т а к т Matsumoto с а д р е с о м matz@ruby-lang. org К о н т а к т Larry с а д р е с о м larry@wall. org
А д р е с Guido: guido@python. org
К а к э т о р а б о т а е т:
М ы с о з д а ё м с л о в а р ь ab2 п р и п о м о щ и о б о з н а ч е н и й, о п и с а н н ы х р а н е е. З а т е м м ы о б р а щ а е м с я к п а р а м к л ю ч -з н а ч е н и е, у к а з ы в а я к л ю ч в о п е р а т о р е и н д е к -с и р о в а н и я, к о т о р ы м м ы п о л ь з о в а л и с ь д л я с п и с к о в и к о р т е ж е й. К а к в и д и т е, с и н т а к с и с п р о с т.
|
|||||||||||||||||
|