mylist = ["one", 1 , 2 , 3] #Example of a list
listone = [1,2,4]
listtwo = [2,3,4,5]
listone + listtwo
[1, 2, 4, 2, 3, 4, 5]
listone*3
[1, 2, 4, 1, 2, 4, 1, 2, 4]
in
and not in
¶mylist = [1,43,7,34,62,2,13,7435,8,9]
2 in mylist
2 not in mylist
False
#for i in range(100):
#add i**2 in a list
a = [i**2 for i in range(1,101)]
print(a)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801, 10000]
mylist = [0,1,2,3,4,5,6,7,8,9,10]
mylist[10]
mylist[-2]
mylist[0:4]
mylist[0::2]
mylist[0:10:2]
mylist[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
mylist = [0,1,2,3,4,5,6]
mylist[3] = "Four"
mylist
[0, 1, 2, 'Four', 4, 5, 6]
mylist = [0,1,2,3,4,5,6]
mylist2 = mylist
mylist[0] = "zero"
mylist2
['zero', 1, 2, 3, 4, 5, 6]
mylist = [5,1,2,3,4,5,6,26,21,856,237,129,765,35,21]
len(mylist)
15
a = [2,5]
a.append(2)
a
[2, 5, 2]
mylist = [1,2,3,4,5]
del mylist[0] #ตำแหน่ง
mylist
[2, 3, 4, 5]
mylist.remove(5) #ตัวเลขที่ต้องการเอาออก
mylist
[2, 3, 4]
my_tuple = (2,4,9) # tuple ต้องมี comma
not_a_tuple = (2) # ไม่เป็น tuple เพราะไม่ใส่ comma
mylist = [1,2,3,4,5,6]
tuple(mylist)
(1, 2, 3, 4, 5, 6)
mytuple = (1,2,3,4,5,6)
list(mylist)
[1, 2, 3, 4, 5, 6]
mytuple = (1,2,3,4,5,6,7,8,9,10)
mytuple[0:5] #เหมือน list
(1, 2, 3, 4, 5)
in
and not in
¶mytuple = (2,635,8,34,89,0,5,1346,9764,21)
2 in mytuple
100 not in mytuple
True
def func(a,b): #a and b are floats
x = a+b
y = a-b
return x,y
k,l = func(3,1)
print(k,l)
4 2
สมมติว่าทางมหาวิทยาลัยวางแผนการเก็บข้อมูล รหัสนักศึกษา และ ชื่อ-นามสกุล ของนักศึกษา เราอาจจะลองเก็บข้อมูลให้อยู่ในรูปของ tuple:
student1 = (690100101 , "Peter Piper")
สามารถดึงรหัสของนักศึกษาโดยใช้ student1[0]
และดึงชื่อด้วย student1[1]
student1[0]
out: 690100101
student1[1]
out: "Peter Piper"
แต่บางครั้งเราก็อยากจะดึงชื่อของนักศึกษาโดยใช้รหัสนักศึกษา ตัวอย่างเช่น
student1[690100101]
out: "Peter Piper"
เราสามารถทำได้โดยการเก็บข้อมูลไว้ใน dictionary แทน
students = {101 : "Peter Parker", 102 : "Mary Jane"}
dictionary ประกอบไปด้วย 2 ส่วน: key (690100101
, 690100101
) และ value ("Peter Piper"
, "Mary Jane"
) โดยที่การเรียก key ใน dictionary นั้น เปรียบเสมือนการไขกุญแจเพื่อเรียก value ที่มากับ key นั้น
students[101]
'Peter Parker'
students[103] = "Minhee"
students
{101: 'Peter Parker', 102: 'Mary Jane', 103: 'Minhee'}
students[101] = 'Peter Pan'
students
{101: 'Peter Pan', 102: 'Mary Jane', 103: 'Minhee'}
students.keys()
students.values()
students.items()
dict_items([(101, 'Peter Pan'), (102, 'Mary Jane'), (103, 'Minhee')])
for key in students.values():
print(key)
Peter Pan Mary Jane Minhee
import numpy as np
random_numbers = np.random.randint(low = 0, high=1_000_000, size=50_000)
random_numbers
array([294927, 590534, 105146, ..., 430380, 898502, 83921])
ลองสร้าง list กับ dictionary เพื่อใช้เก็บตัวเลขใน random_number
ที่ไม่ซ้ำกัน
วิธีที่ 1 ใช้ list
mylist = []
for num in random_numbers:
if num not in mylist:
mylist.append(num)
วิธีที่ 2 ใช้ dict
mydict = {}
for num in random_numbers:
mydict[num] = 1
n
ตัวใช้เวลา O(n)
n
ตัวใช้เวลา O(1)
!wget https://files.grouplens.org/datasets/movielens/ml-latest-small.zip
!unzip ml-latest-small.zip
--2022-10-25 14:30:31-- https://files.grouplens.org/datasets/movielens/ml-latest-small.zip Resolving files.grouplens.org (files.grouplens.org)... 128.101.65.152 Connecting to files.grouplens.org (files.grouplens.org)|128.101.65.152|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 978202 (955K) [application/zip] Saving to: ‘ml-latest-small.zip’ ml-latest-small.zip 100%[===================>] 955.28K 512KB/s in 1.9s 2022-10-25 14:30:36 (512 KB/s) - ‘ml-latest-small.zip’ saved [978202/978202] Archive: ml-latest-small.zip creating: ml-latest-small/ inflating: ml-latest-small/links.csv inflating: ml-latest-small/tags.csv inflating: ml-latest-small/ratings.csv inflating: ml-latest-small/README.txt inflating: ml-latest-small/movies.csv
import pandas as pd
movies = pd.read_csv("ml-latest-small/movies.csv")
movies.head()
movieId | title | genres | |
---|---|---|---|
0 | 1 | Toy Story (1995) | Adventure|Animation|Children|Comedy|Fantasy |
1 | 2 | Jumanji (1995) | Adventure|Children|Fantasy |
2 | 3 | Grumpier Old Men (1995) | Comedy|Romance |
3 | 4 | Waiting to Exhale (1995) | Comedy|Drama|Romance |
4 | 5 | Father of the Bride Part II (1995) | Comedy |
print(movies.iloc[0]['title'])
print(movies.iloc[0]['movieId'])
Toy Story (1995) 1
ratings = pd.read_csv("ml-latest-small/ratings.csv")
ratings.head()
userId | movieId | rating | timestamp | |
---|---|---|---|---|
0 | 1 | 1 | 4.0 | 964982703 |
1 | 1 | 3 | 4.0 | 964981247 |
2 | 1 | 6 | 4.0 | 964982224 |
3 | 1 | 47 | 5.0 | 964983815 |
4 | 1 | 50 | 5.0 | 964982931 |
สมมติว่าเราเก็บข้อมูลเพื่อหาว่า:
ภาพยนตร์แต่ละเรื่องมีคนให้คะแนนทั้งหมดกี่คน
จงสร้างชนิดข้อมูลที่เหมาะสม (list, tuple หรือ dictionary) เพื่อที่จะตอบคำถามข้างบนได้อย่างรวดเร็ว หลังจากนั้นจงบอกว่าในภาพยนตร์แต่ละเรื่องข้างล่างนี้มีผู้ให้คะแนนทั้งหมดกี่คน
a = movies[movies['title']=='Toy Story (1995)']
a
movieId | title | genres | |
---|---|---|---|
0 | 1 | Toy Story (1995) | Adventure|Animation|Children|Comedy|Fantasy |
b = movies[movies['title']=='Speed (1994)']
b
movieId | title | genres | |
---|---|---|---|
334 | 377 | Speed (1994) | Action|Romance|Thriller |
c = movies[movies['title']=="Ocean's Eleven (2001)"]
c
movieId | title | genres | |
---|---|---|---|
3614 | 4963 | Ocean's Eleven (2001) | Crime|Thriller |
toy = ratings[ratings['movieId'] == 1]
toy[['userId']].shape
(215, 1)
มีจำนวนคนที่ดูภาพยนตร์ Toy Story (1995) ทั้งหมด 215 คน
speed = ratings[ratings['movieId'] == 334]
speed[['userId']].shape
(5, 1)
มีจำนวนคนที่ดูภาพยนตร์ Speed (1994) ทั้งหมด 5 คน
ocean = ratings[ratings['movieId'] == 3614]
ocean[['userId']].shape
(8, 1)
มีจำนวนคนที่ดูภาพยนตร์ Ocean's Eleven (2001) ทั้งหมด 8 คน
print(pd.concat([ocean[['userId']],speed[['userId']],toy[['userId']]]))
userId 7655 51 8484 57 42802 288 44374 294 63459 414 ... ... 97364 606 98479 607 98666 608 99497 609 99534 610 [228 rows x 1 columns]
(pd.concat([ocean[['userId']],speed[['userId']],toy[['userId']]])).shape
(228, 1)
มีจำนวนคนที่ดูภาพยนต์ทั้ง 3 เรื่องทั้งหมด 228 คน