Monday, July 13, 2015

თავი 8 (8,3 - 8,5)



8.3 სიის გადაკვეთა
 8.3 Traversing a list


ყველაზე გავრცელებული გზა სიის ელემენტების გადაკვეთის არის for მარყუჟი. სინტაქსი იგივეა რაც სტრინგში:

for cheese in cheeses:
      print cheese

თუ გჭირდება სიის ელემენტის მხოლოდ  წაკითხვა, ეს მეთოდი მუშაობს კარგად, მაგრამ ელემენტის დაწერა ან განახლებაც თუ გინდა, მაშინ დაგჭირდება ინდექსები. ამის გაკეთების ერთ - ერთი გზაა ფუნქციების range და len - ის კომბინირება:

for i in range(len(numbers)):
      numbers[i] = numbers[i] * 2

ეს მარყუჟი კვეთს სიას და ანახლებს ყოველ ელემენტს. len აბრუნებს ელემენტების რაოდენობას სიაში. range აბრუნებს ინდექსების სიას 0 - დან n მინუს ერთამდე სადაც n არის სიის სიგრძე. მარყუჟში, ყოველ ჯერზე i იღებს მომდევნო ელემენტის ინდექსს. ტოლობის ნიშანი იყენებს i - ს რომ წაიკითხოს ელემენტის ძველი მნიშვნელობა და გაუტოლოს ახალ მნიშვნელობას. for მარყუჟი ცარიელი სიისთვის არასდროს განხორციელდება:

for x in empty:
      print 'This never happens.'

სია შეიძლება შეიცავდეს სხვა სიას და ასეთი ჩაბუდებული სია ითვლება ერთ ელემენტად. ამ სიის სიგრძეა ოთხი:

['spam', 1, ['Brie', 'Roquefort', 'Pol le Veq'], [1, 2, 3]]

8.4 List operations

+ ოპერატორი სიებს აერთებს

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a + b
>>> print c
[1, 2, 3, 4, 5, 6]

ასევეა გამრავლების ოპერატორიც:

>>> [0] * 4
[0, 0, 0, 0]
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

პირველ მაგალითში [0] მეორდება ოთხჯერ, ხოლო მეორე მაგალითში სია [1, 2, 3] მეორდება სამჯერ.

8.5 სიის დაჭრა

სიაზე დაჭრის ოპერატორიც მუშაობს:

>>> t = ['a', 'b', 'c', 'd', 'e', 'f']
>>> t[1:3]
['b', 'c']
>>> t[:4]
['a', 'b', 'c', 'd']
>>> t[3:]
['d', 'e', 'f']

პირველ ინდექსს თუ გამოტოვებ, დაჭრა დაიწყება სულ თავიდან. მეორე ინდექსს თუ გამოტოვებ მაშინ დაჭრა მოხდება ბოლომდე და თუ ორივე ინდექსს გამოტოვებ მაშინ ნაჭერი იქნება მთლიანი სიის ასლი.

>>> t[:]
['a', 'b', 'c', 'd', 'e', 'f']

მას შემდეგ, რაც სიები არის შეცვლადი, ხშირად სასარგებლოა გავაკეთოთ ასლი, სანამ შევასრულებთ ოპერაციებს, რომელიც შეცლის სიას.

ტოლობის მარცხნივ დაჭრის ოპერატორი შეიძლება განახლდეს ბევრი ელემენტით:

>>> t = ['a', 'b', 'c', 'd', 'e', 'f']
>>> t[1:3] = ['x', 'y']
>>> print t
['a', 'x', 'y', 'd', 'e', 'f']