Monday, July 13, 2015

თავი 8 (8,1 - 8,2)



                               თავი 8

                                       სიები

8.1 სია არის თანრიგი

8.1 A list is a sequence



სია, ისევე როგორც სტრინგი არის მნიშვნელობათა თანრიგი. სტრინგში მნიშვნელობებია სიმბოლოები, ხოლო სიაში მნიშვნელობებია შეიძლება იყოს ნებისმიერი ტიპი. სიის მნიშვნელობებს ჰქვია ელემენტები  (elements ან items).
სიის გასაკეთებლად რამდენიმე გზაა. ყველაზე მარტივია ელემენტები მოათავსო კვადრატულ ფრჩხილებში [] :

[10, 20, 30, 40]
['crunchy frog', 'ram bladder', 'lark vomit']

პირველ მაგალითშია 4 მთელი რიცხვის სია. მეორეში - სამი სტრინგის. არ არის აუცილებელი ელემენტები ერთნაირი ტიპის იყოს. მომდევნო სიაში ელემენტებადაა: სტრინგი, მთელი რიცხვი, წილადი და სხვა სია:

['spam', 2.0, 5, [10, 20]]

სია სხვა სიაშია ჩაბუდებული. სია, რომელსაც არ აქვს ელემენტები, ქვია ცარიელი სია, რომელიც შეგიძლია გააკეთო ცარიელი კვადრატული ფრჩხილებით [].
როგორც მოსალოდნელი იყო სია შეგიძლია გაუტოლო ცვლადს:

>>> cheeses = ['Cheddar', 'Edam', 'Gouda']
>>> numbers = [17, 123]
>>> empty = []
>>> print cheeses, numbers, empty
['Cheddar', 'Edam', 'Gouda'] [17, 123] []

8.2 სიები შეცვლადია (ცვალებადია)

სიაში ელემენტებზე წვდომის სინტაქსი იგივეა, რაც სტრინგში სიმბოლოებზე წვდომის სინტაქსი. კვადრატული ფრჩხილში გამოსახულება ზუსტად განსაზღვრავს ინდექსს. დაიმახსოვრე რომ ინდექსები იწყება ნულიდან.

>>> print cheeses[0]
Cheddar

სტრინგისგან განსხვავებით სიები შეცვლადია. სიაში შეგიძლია შეცვალო ელემენტების თანრიგი ან ელემენტს სხვა მნიშვნელობა მიანიჭო. როცა კვადრატული ფრჩხილის ოპერატორი ჩანს ტოლობის მარცხენა მხარეს, ეს განსაზღვრავს სიის ელემენტს; თუ რას გაუტოლდეს:

>>> numbers = [17, 123]
>>> numbers[1] = 5
>>> print numbers
[17, 5]

numbers - ის პირველი ელემენტი იყო 123 და გახდა 5.
სიაზე შეგიძლია იფიქრო, როგორც ელემენტების და ინდექსების ურთიერთობაზე, რასაც ეძახიან "რუკის დახაზვას". ყოველი ინდექსი აღნიშნავს ელემენტს.
სიის ინდექსიც ისევე მუშაობს როგორც სტრინგის:

·         ნებისმიერი მთელი რიცხვი შეიძლება გამოიყენო როგორც ინდექსი.
·         თუ ეცდები ისეთი ინდექსის დაწერას ან წაკითხვას, რომელიც არ არსებობს, მაშინ მოხდება ინდექსის შეცდომა IndexError.
·         ინდექსს თუ უარყოფითი მნიშვნელობა აქვს, მაშინ ითვლება სიის ბოლოდან უკუღმა.

in ოპერატორიც მუშაობს სიაზე.

>>> cheeses = ['Cheddar', 'Edam', 'Gouda']
>>> 'Edam' in cheeses
True
>>> 'Brie' in cheeses
False