Python len() ฟังก์ชั่น: วิธีค้นหาความยาวของสตริง

⚡ สรุปอย่างชาญฉลาด

Python `len()` เป็นฟังก์ชันในตัวที่ส่งคืนจำนวนรายการในอ็อบเจ็กต์ เช่น จำนวนอักขระในสตริง หรือจำนวนองค์ประกอบในลิสต์ ทูเปิล พจนานุกรม หรือเซต

  • 🔢 ไวยากรณ์: len(object) รับอาร์กิวเมนต์เดียวและส่งคืนค่าจำนวนเต็ม ซึ่งเป็นจำนวนองค์ประกอบทั้งหมดที่มีอยู่ในอ็อบเจ็กต์นั้น
  • 🔠 สตริง: สำหรับสตริง ฟังก์ชัน len() จะนับทุกอักขระ รวมทั้งช่องว่าง ตัวเลข และเครื่องหมายวรรคตอน
  • 📦 คอลเลกชัน: ฟังก์ชัน len() วัดขนาดของลิสต์ ทูเพิล พจนานุกรม เซต และออบเจ็กต์ช่วงในลักษณะเดียวกัน
  • ⚙️ ประสิทธิภาพ: len() ทำงานในเวลาคงที่ O(1) เนื่องจาก Python จัดเก็บความยาวของแต่ละวัตถุเป็นแอตทริบิวต์
  • ???? ประเภท การเรียกใช้เมธอด len() กับค่าจำนวนเต็มหรือค่า None จะทำให้เกิดข้อผิดพลาด TypeError เนื่องจากค่าเหล่านั้นไม่มีความยาว
  • 🤖 ความช่วยเหลือจากเอไอ: ผู้ช่วยเขียนโค้ด AI จะสร้างการตรวจสอบ len() และไปป์ไลน์การเรียนรู้ของเครื่องจะใช้ len() เพื่อเติมและจัดกลุ่มลำดับ

Python เลน() ฟังก์ชั่น

เป็นสิ่งที่ 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 วิธีการสตริง

คำถามที่พบบ่อย

ใช่แล้ว len() จะนับทุกตัวอักษรในสตริง รวมถึงช่องว่าง แท็บ ตัวเลข และเครื่องหมายวรรคตอน ตัวอย่างเช่น len(“Guru 99!”) ส่งคืนค่า 8 เนื่องจากช่องว่างและเครื่องหมายอัศเจรีย์นับเป็นอักขระหนึ่งตัว

ฟังก์ชัน len() จะคืนค่า 0 สำหรับสตริงว่าง เนื่องจากไม่มีอักขระใดๆ อยู่ภายใน ฟังก์ชัน len() ไม่ได้นับดัชนีเริ่มต้นที่ 0 แต่จะนับองค์ประกอบโดยเริ่มจาก 1 ดังนั้น len("a") จะคืนค่า 1 และ len("") จะคืนค่า 0

จำนวนเต็มไม่สามารถเก็บค่าได้หลายค่า ดังนั้นจึงไม่มีความยาว การเรียกใช้ len(123) จะทำให้เกิดข้อผิดพลาด “TypeError: object of type 'int' has no len()” หากต้องการนับจำนวนหลัก ให้แปลงตัวเลขก่อนด้วย len(str(123))

ใช่แล้ว สำหรับพจนานุกรม ฟังก์ชัน len() จะคืนค่าจำนวนคู่คีย์-ค่า โดยนับแต่ละคู่เพียงครั้งเดียว สำหรับเซต ฟังก์ชัน len() จะคืนค่าจำนวนองค์ประกอบที่ไม่ซ้ำกัน เนื่องจากเซตจะตัดค่าที่ซ้ำกันออกโดยอัตโนมัติ

len() จะส่งคืนจำนวนจุดรหัส Unicode ในสตริง ดังนั้นตัวอักษรที่มีเครื่องหมายเน้นเสียงและสัญลักษณ์ส่วนใหญ่จะนับเป็นหนึ่งจุด อย่างไรก็ตาม อีโมจิและอักขระผสมบางตัวใช้จุดรหัสหลายจุด ดังนั้น len() อาจรายงานมากกว่าหนึ่งจุดสำหรับอักขระเหล่านั้น

ส่งค่า len เป็นคีย์ให้กับฟังก์ชัน max(): max(words, key=len) จะคืนค่าสตริงที่ยาวที่สุดในรายการ ในทำนองเดียวกัน min(words, key=len) จะคืนค่าสตริงที่สั้นที่สุด วิธีนี้ช่วยหลีกเลี่ยงการเขียนลูปเพื่อเปรียบเทียบความยาวแต่ละสตริงด้วยตนเอง

กระบวนการเรียนรู้ของเครื่องจะใช้ฟังก์ชัน len() อย่างต่อเนื่อง เพื่อตรวจสอบขนาดของชุดข้อมูล ยืนยันว่าคุณลักษณะและป้ายกำกับตรงกัน และวัดความยาวของลำดับ โมเดลมักจะเติมหรือตัดข้อความให้มีความยาวเท่ากัน เพื่อให้ชุดข้อมูลมีรูปร่างที่เหมือนกัน

ใช่แล้ว GitHub Copilot จะทำการเติมข้อความอัตโนมัติสำหรับการตรวจสอบ len() และการนับลูปจากคำอธิบายสั้นๆ ที่บอกถึงเป้าหมายของคุณ ผู้ช่วย AI ของ Agentic จะทำได้มากกว่านั้น โดยจะเขียนตรรกะการตรวจสอบความยาว เพิ่มเงื่อนไขป้องกันข้อผิดพลาด TypeError และรันการทดสอบให้คุณด้วย

สรุปโพสต์นี้ด้วย: