204217 Computer Programming Languages Python Lecture 7 OneDimensional

  • Slides: 13
Download presentation
204217: Computer Programming Languages (Python) Lecture 7 One-Dimensional Lists and Tuples Part II Assembled

204217: Computer Programming Languages (Python) Lecture 7 One-Dimensional Lists and Tuples Part II Assembled for 204217 by Kittipitch Kuptavanich

204217: Computer Programming Languages (Python) Sorting Basics (Recap) • แบบ nondestructive >>> sorted([5, 2,

204217: Computer Programming Languages (Python) Sorting Basics (Recap) • แบบ nondestructive >>> sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5] • แบบ destructive >>> >>> [1, a = [5, 2, 3, 1, 4] a. sort() a 2, 3, 4, 5] • method list. sort() ใชไดเฉพาะกบ แตฟงกชน sorted() ใชไดกบ ชนดใดกได List เทานน iterable 2

204217: Computer Programming Languages (Python) Key Functions • เราสามารถระบวธในการเรยงลำดบผานฟงก ชน ในรปของ พารามเตอร key ได

204217: Computer Programming Languages (Python) Key Functions • เราสามารถระบวธในการเรยงลำดบผานฟงก ชน ในรปของ พารามเตอร key ได • พจารณาการ Sort >>> sorted("This is a test string from Andrew". split()) ['Andrew', 'This', 'a', 'from', 'is', 'string', 'test'] • Case-insensitive sort >>> sorted("This is a test string from Andrew". split(), key=str. lower) ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] 3

204217: Computer Programming Languages (Python) Key Functions [2] >>> a = [3, -5, -2,

204217: Computer Programming Languages (Python) Key Functions [2] >>> a = [3, -5, -2, 1, 45, -23] >>> def square(x): return x ** 2 >>> sorted(a, key=square) [1, -2, 3, -5, -23, 45] parameter expression >>> sorted(a, key=lambda x: x ** 2) [1, -2, 3, -5, -23, 45] statement ใน Python มหนาทเปลยน Parameter และ Expression ใหเปนฟงกชนทไมมชอท โดยฟงกชนจะมหนาทคนคาท evaluate • lambda 4

204217: Computer Programming Languages (Python) Key Functions [3] >>> student_tuples = [ ('john', 'A',

204217: Computer Programming Languages (Python) Key Functions [3] >>> student_tuples = [ ('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10), ] # sort by age >>> sorted(student_tuples, key=lambda student: student[2]) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] • เนองจากมความจำเปนตองใชฟงกชน ในลกษณะนบอยครง Python มฟงกชนใน Operator Module เพอทำหนาทนโดยเฉพาะ >>> from operator import itemgetter key >>> sorted(student_tuples, key=itemgetter(2)) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] 5

204217: Computer Programming Languages (Python) zip and unzip >>> x = [1, 2, 3]

204217: Computer Programming Languages (Python) zip and unzip >>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> zipped = zip(x, y) # zipping >>> list(zipped) [(1, 4), (2, 5), (3, 6)] >>> type(zipped) <class 'zip'> >>> (1, >>> (4, x 2, y 2 = zip(*list(x, y)) print(x 2) 2, 3) print(y 2) 5, 6) # unzipping >>> print(x == list(x 2) and y == list(y 2)) True 7

204217: Computer Programming Languages (Python) List Comprehensions • List Comprehensions เปน concept หนงใน python

204217: Computer Programming Languages (Python) List Comprehensions • List Comprehensions เปน concept หนงใน python ในการสราง list ซงโดยมากมกเปนการสราง list จาก element ของ list อนๆ (หรอ iterable data type ชนดอนๆ ) >>> squares = [] • พจารณา การสราง List >>> for x in range(10): . . . squares. append(x**2) >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] • เราสามารถสราง list ทเหมอนกนโดยใช >>> squares = [x ** 2 for x in range(10)] 8

204217: Computer Programming Languages (Python) List Comprehensions [2] • List comprehension ประกอบดวย square brackets

204217: Computer Programming Languages (Python) List Comprehensions [2] • List comprehension ประกอบดวย square brackets [ ] ทม expression for ขางใน โดยสามารถมมากกวา 1 for expression หรอม if expression ได • ผลลพธทไดจะเปน list ทเกดจากการ evaluate ตว Expression ภายใน Brackets [ ] >>> [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y] [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] • Expression ดานบนสราง list ของ tuple ทประกอบดวย element จาก 2 list จบคกน • เวนกรณท element จาก 2 list เทากน 9

204217: Computer Programming Languages (Python) List Comprehensions [3] [(x, y) for x in [1,

204217: Computer Programming Languages (Python) List Comprehensions [3] [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y] # Expression ���������� : >>> combs = [] >>> for x in [1, 2, 3]: . . . for y in [3, 1, 4]: . . . if x != y: . . . combs. append((x, y)). . . >>> combs [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] 10

204217: Computer Programming Languages (Python) List Comprehensions [4] >>> vec = [-4, -2, 0,

204217: Computer Programming Languages (Python) List Comprehensions [4] >>> vec = [-4, -2, 0, 2, 4] >>> # create a new list with the values doubled >>> [x*2 for x in vec] [-8, -4, 0, 4, 8] >>> # filter the list to exclude negative numbers >>> [x for x in vec if x >= 0] [0, 2, 4] >>> # apply a function to all the elements >>> [abs(x) for x in vec] [4, 2, 0, 2, 4] >>> # call a method on each element >>> freshfruit = [' banana', ' loganberry ', 'passion fruit >>> [weapon. strip() for weapon in freshfruit] ['banana', 'loganberry', 'passion fruit'] '] 11

204217: Computer Programming Languages (Python) List Comprehensions [5] >>> # create a list of

204217: Computer Programming Languages (Python) List Comprehensions [5] >>> # create a list of 2 -tuples like (number, square) >>> [(x, x**2) for x in range(6)] [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)] >>> # the tuple must be parenthesized >>> [x, x**2 for x in range(6)] File "<stdin>", line 1, in ? [x, x**2 for x in range(6)] ^ Syntax. Error: invalid syntax >>> >>> [1, # flatten a list using a listcomp with two 'for' vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] [num for elem in vec for num in elem] 2, 3, 4, 5, 6, 7, 8, 9] 12

204217: Computer Programming Languages (Python) References • https: //wiki. python. org/moin/How. To/Sorting • https:

204217: Computer Programming Languages (Python) References • https: //wiki. python. org/moin/How. To/Sorting • https: //docs. python. org/3/howto/sorting. html • https: //docs. python. org/3/howto/functional. html? highlig ht=lambda • https: //docs. python. org/3/tutorial/datastructures. html#li st-comprehensions 13