Python len() ฟังก์ชั่น: วิธีค้นหาความยาวของสตริง
⚡ สรุปอย่างชาญฉลาด
Python `len()` เป็นฟังก์ชันในตัวที่ส่งคืนจำนวนรายการในอ็อบเจ็กต์ เช่น จำนวนอักขระในสตริง หรือจำนวนองค์ประกอบในลิสต์ ทูเปิล พจนานุกรม หรือเซต
เป็นสิ่งที่ Python ฟังก์ชัน len()?
การขอ เลน () ฟังก์ชันนี้เป็นฟังก์ชันในตัวใน Pythonคุณสามารถใช้เมธอด `len()` เพื่อหาความยาวของสตริง อาร์เรย์ ลิสต์ ทูเปิล พจนานุกรม และออบเจ็กต์อื่นๆ ที่กำหนดได้ เนื่องจากจำนวนองค์ประกอบถูกเก็บไว้ในออบเจ็กต์แทนที่จะคำนวณใหม่ทุกครั้ง เมธอด `len()` จึงช่วยให้คุณตรวจสอบขนาดได้อย่างรวดเร็วและเพิ่มประสิทธิภาพการทำงานของโปรแกรมของคุณ
ไวยากรณ์ของ Python เลน() ฟังก์ชั่น
การขอ Python ฟังก์ชัน len() ใช้ไวยากรณ์ดังต่อไปนี้:
len(value)
พารามิเตอร์
ราคา: วัตถุที่กำหนด เช่น สตริง รายการ ทูเปิล พจนานุกรม หรือเซต ที่คุณต้องการวัดความยาว
ราคาย้อนกลับ
`len()` ส่งคืนค่าจำนวนเต็ม ซึ่งก็คือจำนวนอักขระในสตริง หรือจำนวนองค์ประกอบในอาร์เรย์ รายการ หรือคอลเลกชัน ความหมายที่แท้จริงของค่าที่ส่งคืนจะขึ้นอยู่กับประเภทของวัตถุที่ส่งเข้ามา:
- สตริง: len() จะคืนค่าจำนวนอักขระในสตริง ซึ่งรวมถึงเครื่องหมายวรรคตอน ช่องว่าง และอักขระพิเศษทุกชนิด
- ว่างเปล่า: สตริงว่างหรือคอลเลกชันว่างจะส่งคืนค่า 0 เนื่องจากไม่มีองค์ประกอบใด ๆ
- คอลเลกชัน: ฟังก์ชัน len() ในตัวจะส่งคืนจำนวนองค์ประกอบที่จัดเก็บอยู่ในคอลเลกชัน
- ประเภท ฟังก์ชัน len() ขึ้นอยู่กับชนิดของอ็อบเจ็กต์ที่ส่งเข้ามา การส่งค่าที่ไม่มีความยาว เช่น จำนวนเต็ม จะทำให้เกิดข้อผิดพลาด TypeError
- พจนานุกรม: สำหรับพจนานุกรม แต่ละคู่คีย์-ค่าจะนับเป็นหนึ่งหน่วย ดังนั้น len() จะคืนค่าจำนวนคีย์
ตัวอย่างของ Python เลน() ฟังก์ชั่น
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน len() เพื่อหาความยาวของวัตถุต่างๆ Python อ็อบเจ็กต์ต่างๆ ได้แก่ สตริง รายการ ทูเปิล พจนานุกรม และอาร์เรย์
ตัวอย่างที่ 1: วิธีการหาความยาวของสตริง
# testing len()
str1 = "Welcome to Guru99 Python Tutorials"
print("The length of the string is :", len(str1))
Output:
The length of the string is : 35
ตัวอย่างที่ 2: วิธีการหาความยาวของรายการ
# to find the length of the list
list1 = ["Tim","Charlie","Tiffany","Robert"]
print("The length of the list is", len(list1))
Output:
The length of the list is 4
ตัวอย่างที่ 3: วิธีการหาความยาวของทูเพิล
# to find the length of the tuple
Tup = ('Jan','feb','march')
print("The length of the tuple is", len(Tup))
Output:
The length of the tuple is 3
ตัวอย่างที่ 4: วิธีการหาความยาวของพจนานุกรม
# to find the length of the Dictionary
Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print("The length of the Dictionary is", len(Dict))
Output:
The length of the Dictionary is 4
ตัวอย่างที่ 5: วิธีการหาความยาวของอาร์เรย์
# to find the length of the array
arr1 = ['Tim','Charlie','Tiffany','Robert']
print("The length of the Array is", len(arr1))
Output:
The length of the Array is 4
วิธีค้นหาความยาวของสตริงโดยไม่ต้องใช้ฟังก์ชัน len() Python
ฟังก์ชัน `len()` เป็นวิธีที่เร็วที่สุดและอ่านง่ายที่สุดในการวัดความยาวของสตริง แต่คุณก็สามารถนับจำนวนตัวอักษรด้วยตนเองได้เช่นกัน นี่เป็นแบบฝึกหัดทั่วไปในการสัมภาษณ์งานด้านการเขียนโปรแกรม และทุกวิธีก็เพียงแค่วนลูปผ่านสตริงพร้อมกับเพิ่มค่าตัวนับขึ้นเรื่อยๆ
วิธีที่นิยมใช้มากที่สุดคือการใช้ลูป for:
# length of a string without len()
mystr = "Guru99"
count = 0
for char in mystr:
count += 1
print("The length is", count)
Output:
The length is 6
วิธีที่สั้นกว่าคือการใช้ฟังก์ชัน sum() ร่วมกับนิพจน์ตัวสร้าง โดยเพิ่ม 1 สำหรับทุกตัวอักษรในสตริง:
mystr = "Guru99"
length = sum(1 for char in mystr)
print("The length is", length)
Output:
The length is 6
วิธีอื่นๆ ในการนับจำนวนอักขระโดยไม่ต้องใช้ฟังก์ชัน len() ได้แก่ วิธีต่อไปนี้:
- ลูป while ที่ตัดสตริงไปเรื่อยๆ จนกว่าจะว่างเปล่า โดยเพิ่มค่าตัวนับในแต่ละรอบ
- ฟังก์ชัน enumerate() ซึ่ง tracks คือดัชนีของอักขระแต่ละตัวขณะที่วนซ้ำ
- ฟังก์ชันเรียกตัวเองที่ส่งค่าคืนเป็น 1 บวกกับความยาวของสตริงย่อยที่เหลืออยู่
วิธีการเขียนโค้ดด้วยตนเองเหล่านี้ช้ากว่าฟังก์ชัน len() ที่มีอยู่แล้ว ดังนั้นควรใช้สำหรับการเรียนรู้หรือฝึกฝนการสัมภาษณ์เท่านั้น ในโค้ดทั่วไป len() ยังคงเป็นตัวเลือกที่เร็วที่สุดและชัดเจนที่สุด
อย่างไร Python ฟังก์ชัน len() ทำงานภายในอย่างไร?
การเข้าใจหลักการทำงานของ len() จะช่วยอธิบายว่าทำไมมันถึงเร็วมาก เมื่อคุณเรียกใช้ len() กับอ็อบเจ็กต์ Python ไม่ได้สแกนทุกองค์ประกอบทีละรายการ แต่จะเรียกเมธอดพิเศษ __len__() ของอ็อบเจ็กต์ ซึ่งหมายความว่านิพจน์ len(x) เทียบเท่ากับ x.__len__()
คอนเทนเนอร์สำเร็จรูป เช่น สตริง รายการ ทูเปิล พจนานุกรม และเซต จะเก็บขนาดของตัวเองไว้ในแอตทริบิวต์ ทุกครั้งที่คุณเพิ่มหรือลบองค์ประกอบ Python อัปเดตจำนวนที่จัดเก็บไว้ เมื่อเรียกใช้ len() ระบบจะอ่านค่าที่จัดเก็บไว้ล่วงหน้าและส่งคืนค่านั้น
เนื่องจากทราบความยาวอยู่แล้ว ฟังก์ชัน len() จึงทำงานในเวลาคงที่ เขียนได้เป็น O(1) ใช้เวลาเท่ากันไม่ว่าอ็อบเจ็กต์จะเก็บรายการห้ารายการหรือห้าล้านรายการก็ตาม นอกจากนี้ คุณยังสามารถเพิ่มการรองรับ len() ให้กับคลาสของคุณเองได้โดยการกำหนดเมธอด __len__() ที่ส่งคืนค่าจำนวนเต็ม:
class Team:
def __len__(self):
return 11
squad = Team()
print(len(squad))
Output:
11
การออกแบบนี้เป็นเหตุผลว่าทำไมเมธอด len() จึงทำงานได้อย่างสม่ำเสมอในทุกประเภทข้อมูลพื้นฐาน รวมถึงอ็อบเจ็กต์แบบกำหนดเองใดๆ ที่ใช้งานเมธอด __len__() ด้วย
» เรียนรู้เพิ่มเติมเกี่ยวกับ Python วิธีการสตริง

