از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
بررسی کنید که آیا یک رشته حاوی عنصری از یک لیست در پایتون است یا خیر
سرفصلهای مطلب
معرفی
توانایی بررسی اینکه آیا یک رشته حاوی عنصری از یک لیست است در طیف گسترده ای از برنامه ها مانند فیلتر کردن متن، اعتبارسنجی داده ها و پردازش زبان طبیعی استفاده می شود. تصور کنید که در حال ساخت یک برنامه چت هستید و می خواهید یک فیلتر ناسزا اجرا کنید. شما می توانید لیستی از کلمات ممنوعه داشته باشید و به راحتی پیام های دریافتی را با این لیست بررسی کنید. یا شاید، ممکن است روی یک تابع جستجو کار کنید که باید اقدامات خاصی را بر اساس کلمات کلیدی موجود در پرس و جو انجام دهد.
این بایت روشهای مختلفی را برای دستیابی به این تطابق فهرست رشتهای نشان میدهد و چند پایتون را برای انجام آن به نمایش میگذارد.
چرا عناصر در یک رشته را بررسی کنیم؟
ما در مورد چند مورد استفاده در مقدمه صحبت کردیم، اما بیایید چند مورد دیگر را ببینیم.
تصور کنید در حال کار بر روی یک پروژه تجزیه و تحلیل متن هستید و لیستی از کلمات کلیدی دارید که می خواهید در حجم وسیعی از متن پیدا کنید. بررسی اینکه آیا این کلمات کلیدی در متن وجود دارند یا خیر، بخش اساسی پروژه شما است. شاید تکرار بیشتر کلمات مثبت به این معنی باشد که متن دارای احساس مثبت است.
یا یک کار خراش دادن وب را در نظر بگیرید که در آن داده ها را از صفحات وب استخراج می کنید. شما فهرستی از URL ها دارید و می خواهید بررسی کنید که آیا رشته خاصی (شاید یک تگ یا ویژگی HTML خاص) در این URL ها وجود دارد یا خیر.
در این سناریوها و بسیاری دیگر، توانایی بررسی اینکه آیا یک رشته حاوی عنصری از یک لیست است، مهم می شود.
روش 1: با استفاده از عملگر ‘in’
را in
عملگر در پایتون برای بررسی اینکه آیا یک مقدار در یک دنباله وجود دارد (مانند یک رشته یا یک لیست) استفاده می شود. برمی گردد True
اگر مقدار در دنباله و یافت شود False
در غیر این صورت.
در اینجا نحوه استفاده از عملگر “in” برای بررسی اینکه آیا یک رشته حاوی عنصری از یک لیست است، آمده است:
my_string = "Hello, World!"
my_list = ("Hello", "Python", "World")
for element in my_list:
if element in my_string:
print(f"{element} is in the string")
else:
print(f"{element} is not in the string")
وقتی این کد را اجرا می کنید، روی هر عنصر در داخل تکرار می شود my_list
و بررسی می کند که آیا در آن وجود دارد my_string
. اگر این کار را کرد، پیامی را چاپ می کند که می گوید عنصر در رشته است. اگر این کار را نکرد، پیامی را چاپ می کند که می گوید عنصر در رشته نیست.
Hello is in the string
Python is not in the string
World is in the string
روش 2: استفاده از درک فهرست
درک لیست روشی مختصر برای ایجاد لیست بر اساس لیست های موجود است. همچنین می توان از آن برای انجام عملیات بر روی هر عنصر در یک لیست استفاده کرد.
در مورد ما، میتوانیم از درک لیست برای ایجاد یک لیست جدید که حاوی عناصر موجود است استفاده کنیم my_list
که در یافت می شوند my_string
. در اینجا نحوه انجام آن آمده است:
my_string = "Hello, World!"
my_list = ("Hello", "Python", "World")
found_elements = (element for element in my_list if element in my_string)
print(found_elements)
در این کد، درک لیست بر روی هر عنصر تکرار می شود my_list
و بررسی می کند که آیا در آن وجود دارد my_string
. اگر این کار را کرد، عنصر را به آن اضافه می کند found_elements
فهرست وقتی چاپ می کنید found_elements
، عناصر را نمایش می دهد my_list
که در یافت می شوند my_string
.
('Hello', 'World')
روش 3: استفاده از هر () تابع
در پایتون، any()
تابع یک تابع داخلی است که برمی گردد True
اگر هر عنصری از یک تکرار درست باشد. اگر نه، برمی گردد False
. این یک راه سریع و آسان برای بررسی اینکه آیا عنصری از یک لیست در یک رشته وجود دارد یا خیر است. بیایید ببینیم چگونه می توانیم از آن استفاده کنیم.
def check_string_for_list_elements(string, list):
return any(i in string for i in list)
print(check_string_for_list_elements("I love Python programming", ("Java", "Ruby", "Python")))
اینجا any()
تابع روی لیست تکرار می شود و برمی گردد True
به محض اینکه “پایتون” را در رشته پیدا کرد. خروجی این کد خواهد بود True
.
ممکن است متوجه شوید یکی از خطوط بالا کمی شبیه درک لیست است که قبلا در این بایت دیدیم:
any(i in string for i in list)
شبیه درک لیست است، اما کاملاً یکسان نیست. تنها چیزی که از دست می دهد، براکت های اطراف است i in string for i in list
بیانیه. در این حالت، به جای ایجاد یک لیست، در واقع یک ژنراتور ایجاد می کند.
خطاهای احتمالی و نحوه جلوگیری از آنها
در حالی که این روش ها به طور کلی قابل اعتماد هستند، چند دام احتمالی وجود دارد که باید از آنها آگاه بود. یک خطای رایج ممکن است زمانی اتفاق بیفتد که لیست حاوی اعداد باشد. پایتون با اعداد و رشته ها متفاوت رفتار می کند، بنابراین اگر لیست شما حاوی اعداد است، قبل از بررسی باید آنها را به رشته تبدیل کنید.
def check_string_for_list_elements(string, list):
return any(str(i) in string for i in list)
print(check_string_for_list_elements("I love Python programming and the number 3", (1, 2, 3)))
این باز خواهد گشت True
همانطور که عدد 3 در رشته وجود دارد. از آنجایی که ابتدا همه موارد را با استفاده از رشته تبدیل می کنیم کار خواهد کرد str()
. برخلاف جاوا اسکریپت، پایتون این تبدیل را برای شما انجام نمی دهد.
نتیجه
در این بایت، ما سه روش مختلف را بررسی کردهایم تا بررسی کنیم که آیا یک رشته حاوی عنصری از یک لیست در پایتون است یا خیر. همچنین درباره خطاهای احتمالی و نحوه اجتناب از آنها صحبت کرده ایم. بسته به مورد خاص و نیازهای عملکردی شما، ممکن است استفاده از عملگر “in”، درک لیست، یا any()
تابع.
منتشر شده در 1402-12-26 21:41:09