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']
No comments:
Post a Comment