ถ้าฉันมีอาร์เรย์ของสตริงฉันสามารถตรวจสอบเพื่อดูว่าสตริงอยู่ในอาร์เรย์โดยไม่ทำการfor
วนซ้ำหรือไม่? โดยเฉพาะฉันกำลังมองหาวิธีที่จะทำมันในif
คำสั่งดังนั้นบางสิ่งเช่นนี้:
if [check that item is in array]:
ถ้าฉันมีอาร์เรย์ของสตริงฉันสามารถตรวจสอบเพื่อดูว่าสตริงอยู่ในอาร์เรย์โดยไม่ทำการfor
วนซ้ำหรือไม่? โดยเฉพาะฉันกำลังมองหาวิธีที่จะทำมันในif
คำสั่งดังนั้นบางสิ่งเช่นนี้:
if [check that item is in array]:
คำตอบ:
สมมติว่าคุณหมายถึง "รายการ" ที่คุณพูดว่า "อาร์เรย์" คุณสามารถทำได้
if item in my_list:
# whatever
สิ่งนี้ใช้ได้กับคอลเลกชันใด ๆ ไม่ใช่เฉพาะสำหรับรายการ สำหรับพจนานุกรมจะตรวจสอบว่ามีรหัสที่ให้ไว้ในพจนานุกรม
ฉันจะสมมติว่าคุณหมายถึง "รายการ" เมื่อคุณพูดว่า "อาร์เรย์" วิธีแก้ปัญหาของ Sven Marnach นั้นดี หากคุณกำลังจะทำการตรวจสอบซ้ำแล้วซ้ำอีกในรายการแล้วมันอาจจะคุ้มค่าที่จะแปลงเป็นชุดหรือ frozenet ซึ่งอาจเร็วกว่าสำหรับการตรวจสอบแต่ละครั้ง สมมติว่ารายการ strs ของคุณถูกเรียกว่าsubjects
:
subject_set = frozenset(subjects)
if query in subject_set:
# whatever
ใช้ฟังก์ชั่นแลมบ์ดา
สมมติว่าคุณมีอาร์เรย์:
nums = [0,1,5]
ตรวจสอบว่า 5 อยู่ในnums
:
(len(filter (lambda x : x == 5, nums)) > 0)
วิธีนี้มีประสิทธิภาพมากขึ้น ตอนนี้คุณสามารถตรวจสอบว่าหมายเลขใด ๆ ที่ตรงตามเงื่อนไขที่กำหนดอยู่ในอาร์เรย์ของคุณnums
หรือไม่
ตัวอย่างเช่นตรวจสอบว่ามีหมายเลขใด ๆ ที่มากกว่าหรือเท่ากับ 5 อยู่ในnums
:
(len(filter (lambda x : x >= 5, nums)) > 0)
TypeError: object of type 'filter' has no len()
คุณต้องใช้. ค่าสำหรับอาร์เรย์ ตัวอย่างเช่นสมมติว่าคุณมี dataframe ซึ่งมีชื่อคอลัมน์เช่นทดสอบ ['ชื่อ'] คุณสามารถทำได้
if name in test['Name'].values :
print(name)
สำหรับรายการปกติคุณไม่จำเป็นต้องใช้ค่า
คุณยังสามารถใช้ไวยากรณ์เดียวกันสำหรับอาร์เรย์ ตัวอย่างเช่นการค้นหาภายในซีรี่ส์ Pandas:
ser = pd.Series(['some', 'strings', 'to', 'query'])
if item in ser.values:
# do stuff