วิธีใช้ List Comprehension ใน Python

วิธีใช้ List Comprehension ใน Python

การใช้การทำความเข้าใจรายการอย่างทันท่วงทีใน Python สามารถทำให้การดำเนินการรายการซ้ำเป็นเรื่องง่ายสำหรับคุณ นอกจากจะเป็นบรรทัดเดียวแล้ว ยังอ่านง่ายกว่าและดำเนินการอย่างมีประสิทธิภาพอีกด้วย





อย่างไรก็ตาม คุณอาจจะต้องทำงานหนักขึ้นหากคุณไม่รู้วิธีใช้งาน อาจทำให้หงุดหงิดมากขึ้นหากคุณไม่ทราบว่าจะใช้โค้ดนี้ได้ที่ไหน ที่นี่ เราจะแสดงวิธีใช้ list comprehension ใน Python พร้อมตัวอย่างในชีวิตจริง





ความเข้าใจรายการใน Python คืออะไรและทำงานอย่างไร

การสร้างรายการด้วย Python เป็นเรื่องง่าย อย่างไรก็ตาม งานอาจกลายเป็นเรื่องน่าเบื่อเล็กน้อยเมื่อคุณต้องการสร้างรายการค่าหรือรายการจากการดำเนินการทางคณิตศาสตร์หรือสตริง นั่นคือเมื่อใช้การทำความเข้าใจรายการจะมีประโยชน์





ข้อดีของการใช้ list comprehension คือ คุณสามารถดำเนินการหลายอย่างในรายการเดียว

เล่นเกมออนไลน์กับเพื่อน ๆ บนคอมพิวเตอร์หลายเครื่อง

ในทางตรงกันข้าม มันสร้างรายการใหม่และผนวกเข้ากับรายการว่างที่ประกาศโดยอัตโนมัติ ดังนั้นแทนที่จะสร้างรายการว่างด้วยตนเองและต่อท้ายรายการด้วย a สำหรับ วนซ้ำ ความเข้าใจรายการของ Python ช่วยให้คุณทำสิ่งนี้ได้โดยอัตโนมัติโดยที่คุณไม่ต้องกังวลว่ารายการใหม่จะเข้ามาได้อย่างไร



คำว่า 'list comprehension' มาจากข้อเท็จจริงที่ว่าการดำเนินการทั้งหมดอยู่ในรายการ Python ที่กำหนดให้กับตัวแปรที่มีชื่อ ดังที่เราได้กล่าวไว้ก่อนหน้านี้ มันให้คุณดำเนินการเฉพาะในโค้ดบรรทัดเดียว จากนั้นผนวกผลลัพธ์เข้ากับรายการใหม่

ในท้ายที่สุด คุณยังสามารถใช้ผลลัพธ์ของความเข้าใจรายการเพื่อวัตถุประสงค์อื่นได้อีกด้วย นั่นเป็นเพราะมันซ้อนนิพจน์ในตัวแปรที่แยกจากกัน เพื่อให้คุณสามารถอ้างอิงได้ในภายหลัง





ตัวอย่างเช่น คุณอาจจะ ขูดเว็บไซต์ด้วย BeautifulSoup . สมมติว่าคุณต้องการรับชื่อรายการทั้งหมดและราคาจากเว็บไซต์

จากนั้นคุณตัดสินใจใส่ข้อมูลที่คัดลอกมาในไฟล์ CSV หรือ Excel แนวทางปฏิบัติที่ดีคือการขูดชื่อรายการทั้งหมดและราคา และจัดวางรายการทั้งสองในคอลัมน์แยกกัน อย่างไรก็ตาม การใช้การทำความเข้าใจรายการ ในกรณีนั้น ทำให้แน่ใจว่าคุณมีข้อมูลที่คัดลอกมาในตัวแปรเฉพาะ จากนั้นคุณสามารถแปลงตัวแปรดังกล่าวเป็น Python DataFrame ได้ในภายหลัง





ดูตัวอย่างด้านล่าง:

Products = [i.text for i in bs.find_all('name tags')]
Price = [i.text for i in bs.find_all('price tags')]

เมื่อคุณได้ตัวแปรแบบวนซ้ำแล้ว คุณสามารถใส่ตัวแปรเหล่านี้ในคอลัมน์แยกกันใน DataFrame โดยใช้ Pandas ของ Python

วิธีสร้างและใช้ความเข้าใจรายการใน Python

NS สำหรับ ลูปเป็นตัววนซ้ำที่จำเป็นในการทำความเข้าใจรายการ โดยทั่วไป ความเข้าใจรายการใน Python จะใช้รูปแบบนี้:

ComprehensionVariable = [expression for items in list]

การพิมพ์ ตัวแปรความเข้าใจ ผลลัพธ์ของรหัสข้างต้นเป็นรายการ

อย่างไรก็ตาม ระวังอย่าสับสนระหว่างความเข้าใจรายการกับการเปิดกว้าง สำหรับ ห่วง

ตัวอย่างเช่น ขอ ใช้ open for loop เพื่อรับรายการทวีคูณของสามทั้งหมดระหว่าง 1 ถึง 30:

myList = []
for i in range(1, 11):
myList.append(i * 3)
print(myList)
Output: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

เพื่อเปรียบเทียบทั้งสอง ให้ทำสิ่งเดียวกันโดยใช้ความเข้าใจรายการ:

multiplesOf3 = [i*3 for i in range(1, 11)]
print(multiplesOf3)
Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

คุณสามารถใช้ list comprehension กับ conditional statement ได้เช่นกัน โค้ดตัวอย่างด้านล่างพิมพ์ตัวเลขคี่ทั้งหมดระหว่าง 1 ถึง 10:

oddNumbers = [i for i in range(1, 11) if not i%2==2]
print(oddNumbers)
Output = [1, 3, 5, 7, 9]

ตอนนี้ เรามาเขียนโค้ดด้านบนใหม่โดยใช้ open . กัน สำหรับ ห่วง:

myList = []
for i in range(1, 11):
if not i%2 == 0:
myList.append(i)
print(myList)
Output: [1, 3, 5, 7, 9]

ที่เกี่ยวข้อง: วิธีผนวกรายการใน Python

ความเข้าใจรายการยังยอมรับคำสั่งซ้อนถ้า:

oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]

นอกจากนี้ยังต้องใช้ซ้อนกัน สำหรับ ห่วง:

someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]
print(someNums)

คุณยังสามารถมีรังแบบธรรมดาได้ สำหรับ วนซ้ำในการทำความเข้าใจรายการ:

someNums = [i*2 for i in range(1, 3) for k in range(4)]

คุณสามารถจัดการสตริงด้วยความเข้าใจรายการ Python ได้เช่นกัน มาดูความเข้าใจในการนับคำศัพท์ด้านล่างกัน:

word = ['This is a python list comprehension tutorial']
wordCounter = [i.count(' ') + 1 for i in word]
print(wordCounter)
Output: 7

ความเข้าใจรายการยังสามารถยอมรับฟังก์ชันที่ดำเนินการเฉพาะ มาแทรกฟังก์ชันตัวคูณที่ได้รับเลขคู่ในการทำความเข้าใจรายการเพื่อดูว่ามันทำงานอย่างไร:

Numbers = [4, 7, 8, 15, 17, 10]
def multiplier(n):
multiple = n*2
return multiple
multipleEven = [multiplier(i) for i in Numbers if i%2==0]
print(multipleEven)
Output: [8, 16, 20]

คุณยังสามารถเขียนโค้ดด้านบนในฟังก์ชันเดียวโดยไม่ต้องใช้ความเข้าใจ แต่การทำความเข้าใจรายการจะมีประโยชน์เมื่อคุณต้องทำซ้ำหลายครั้งและวางแต่ละรายการไว้ในตัวแปรที่แยกจากกัน

ตัวอย่างเช่น คุณสามารถดำเนินการอื่นบน NS และมีตัวแปรเฉพาะสำหรับมัน มาแก้ไขความเข้าใจด้านบนเพื่อสร้างเลขคู่จากเลขคี่:

multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]
print(multipleEvenFromOdds)
Output: [14, 30, 34]

พจนานุกรมและตั้งค่าความเข้าใจ

นอกจากการทำความเข้าใจรายการแล้ว Python ยังมีพจนานุกรมและฟังก์ชันการเข้าใจชุดอีกด้วย

ดูตัวอย่างความเข้าใจในพจนานุกรมด้านล่างเพื่อดูว่ามันทำงานอย่างไร:

corresponding = {i: i*2 for i in range(10) if not i%2==0}
print(corr)
Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}

โค้ดด้านบนจะวนซ้ำรายการตัวเลขระหว่าง 1 ถึง 9 และทำให้เป็นคีย์ จากนั้นบอกให้ Python คูณแต่ละคีย์ด้วยสอง สุดท้าย จะแสดงผลลัพธ์ของการดำเนินการนั้นเป็นค่าที่สอดคล้องกันสำหรับแต่ละคีย์ในอาร์เรย์ผลลัพธ์

ที่เกี่ยวข้อง: อาร์เรย์และรายการทำงานอย่างไรใน Python

ความเข้าใจชุดจะคล้ายกับความเข้าใจรายการ นี่คือตัวอย่างของชุดความเข้าใจ:

เชื่อมต่อ wii u gamepad กับพีซี
numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}

อย่างไรก็ตาม ไม่เหมือน list comprehension set comprehension จะลบรายการที่ซ้ำกัน:

nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}
print(nums)
Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

คุณสามารถลองใช้โค้ดด้านบนโดยใช้การทำความเข้าใจรายการเพื่อดูว่ามีความแตกต่างกันอย่างไร

คุณสามารถใช้ List Comprehension ทุกครั้งได้หรือไม่?

เราได้ดูตัวอย่างต่างๆ ของความเข้าใจรายการและที่ที่คุณสามารถใช้ได้ อย่างไรก็ตาม เช่นเดียวกับวิธี Python อื่นๆ กรณีการใช้งานของ list comprehension ขึ้นอยู่กับปัญหาเฉพาะที่คุณต้องการแก้ไข ดังนั้น คุณควรใช้เฉพาะเมื่อเหมาะสำหรับปัญหาเฉพาะที่คุณต้องการแก้ไขเท่านั้น

จุดประสงค์ประการหนึ่งของการทำความเข้าใจรายการคือการทำให้โค้ดของคุณง่ายขึ้นและทำให้อ่านง่ายขึ้น ดังนั้น อย่าลืมหลีกเลี่ยงความซับซ้อนเมื่อต้องรับมือกับมัน ตัวอย่างเช่น ความเข้าใจ Python ที่ยาวนานอาจกลายเป็นเรื่องซับซ้อนในการอ่าน ที่ขัดต่อจุดประสงค์ของมัน

แบ่งปัน แบ่งปัน ทวีต อีเมล วิธีการใช้ Python List Comprehensions (และเมื่อไม่ใช้)

นี่คือทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการใช้คุณลักษณะที่น่าทึ่งของ Python ที่จะเพิ่มประสิทธิภาพการทำงานและความสามารถในการอ่านโค้ดของคุณในชั่วข้ามคืน

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • การเขียนโปรแกรม
  • Python
เกี่ยวกับผู้เขียน อิดิโซ โอมิโซลา(94 บทความที่ตีพิมพ์)

Idowu หลงใหลเกี่ยวกับเทคโนโลยีอัจฉริยะและประสิทธิภาพการทำงานทุกอย่าง ในเวลาว่าง เขาเล่นไปรอบๆ กับการเขียนโค้ดและเปลี่ยนไปเล่นกระดานหมากรุกเมื่อรู้สึกเบื่อ แต่เขาก็ชอบที่จะแยกตัวออกจากงานประจำบ้างเป็นบางครั้ง ความหลงใหลในการแสดงให้ผู้คนได้รู้จักเทคโนโลยีสมัยใหม่กระตุ้นให้เขาเขียนมากขึ้น

เพิ่มเติมจาก Idowu Omisola

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก