بکندباز

تابع ‎filter()‎‎ در پایتون

مثال

فیلتر کردن اعضای آرایه بر اساس تابع myFunc و فقط برگرداندن اعضایی از آرایه که بزرگتر یا مساوی با 18 هستند:

ages = [5, 12, 17, 18, 24, 32]

def myFunc(x):
  if x < 18:
     return False
  else:
    return True

adults  = filter(myFunc, ages)

for x in adults:
  print(x)

توضیحات

تابع ‎filter()‎ یک شیء آرایه ای (مثل لیست و …) را در ورودی می گیرد و اعضای آن را بر اساس یک تابع دیگر فیلتر می کند و آرایه ای جدید را در خروجی برمی گرداند.

سینتکس

filter(function, iterable)

 

backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*

    user-b5tT پاسخ

    سلام
     لطفآ راهنمایی بفرمایید چه جوری میشه حروف صدادار با دستور فیلتر حذف کرد
    با تشکر

      zohreh پاسخ

      سلام.

      در تابع ورودی فیلتر، میتونید مشخص کنید که اگر حرف جزء حروف صدادار باشه حذف بشه:

      def myFunc(x):
        if x in ['a', 'i', 'u', 'e', 'o']:
            return False
        else:
            return True
      
      fil  = filter(myFunc, 'backendbaz')
      
      print("".join(list(fil)))
    hamid1345sie پاسخ

    سلام lین برنامه میخواهد 10 اسم بگیره و استاندار سازی اسامی انجام بده و  بعد اسامی به صورت  عمودی چاپ بکنه. ولی دو تا مشکل دار 1- استاندار سازی انجام نمیکنه 2- در خروجی 9 اسم چاپ می کنه  میشه لطفاّ راهنمایی بکنید.

    list = []
    name = str(input())
    y = name.capitalize()
    count = 0
    for y in range(1, 10):
        list.append(name)
        name = str(input())
        
    
        if count == 10:
          item= list.capitalize()
    
          break
    for item in list:
        print(item)
    
    ​
      zohreh پاسخ

      سلام.

      چند مورد وجود داره:
      1- در خط 3 متغیر y  رو برابر با y = name.capitalize() قرار دادید و در ادامه از همون متغیر در حلقه استفاده کردید که صحیح نیست. 

      2- list.capitalize(): داده list متدی به اسم capitalize نداره.

      3- متغیر count یکبار مقدار اولیه 0 گرفته و دیگه تغییری نکرده پس شرط if count == 10: هیچوقت صحیح نمیشه. البته اصلا نیازی هم به متغیر count نیست چون شمارش از طریق خود حلقه کنترل میشه.

      در نتیجه مشکل از اینجاست که اولاً شما متد capitalize رو فقط روی اولین اسم اعمال کردید که نتیجه رو توی متغیر y ریختید که بی استفاده است و متد capitalize روی بقیه اسم ها اعمال نشده. در نتیجه درون حلقه باید این متد رو روی تک تک اسم ها قبل از اضافه کردن به لیست اعمال کنید: list.append(name.capitalize)

      ثانیاً در حلقه دستور name = str(input()) بعد از دستور append اومده به همین دلیل آخرین اسمی که در ورودی دریافت می کنید وارد لیست نمیشه برای همین لیست شما 9 اسم داره.

      اصلاحیات:

      1- به این 3 خط در ابتدای کد نیازی ندارید و می تونید مستقیماً حلقه رو شروع کنید:

      name = str(input())
      y = name.capitalize()
      count = 0

      2- اگر این سه خط رو حذف کنیم برای جبران حلقه رو از 0 شروع می کنیم که 10 تا شمارش تکمیل بشه.

      3- جای دو خط اول درون حلقه رو تغییر میدیم تا تمام اسم ها درون لیست ذخیره بشن.

      4- متد capitilize رو روی تک تک اسم ها اعمال می کنیم:

      list = []
      for y in range(0, 10):
          name = str(input())
          list.append(name.capitalize())
      
      print(list)
    hamid1345sie پاسخ

    به مناسبت عید نوروز سه دوست قدیمی می خواهند همدیگر را ملاقات کنند. آذرمهر، آذرگون و مهرآئین قصد دارند در یک نقطه همدیگر را ملاقات کنند. منزل این سه نفر روی خط راست قرار دارد (محور xها) خانه ی آذرمهر در نقطه ی x1 قرار دارد، خانه ی آذرگون در نقطه ی x2 قرار دارد و خانه ی مهرآئین در نقطه ی x3 قرار دارد. آنها در مجموع می خواهند کمترین مسافت را طی کنند. با در دست داشتن x1 x2 x3 کمترین مسافتی که این سه در مجموع باید طی کنند تا در یک نقطه همدیگر را ملاقات کنند را محاسبه کنید. لطفا در صورتی که جواب عدد صحیح شد آن را بدون نقطه ی عدد اعشاری چاپ کنید مثلا در نمونه ی زیر اگر چاپ کنید 6.0 غلط است.
    دقت کنید که مسافت مورد نظر است نه مکانی که قرار است همدیگر را ملاقات کنند.
     
    ورودی نمونه:
    6 9 10
    خروجی نمونه:
    4

    hamid1345sie پاسخ

    سلام من کد زیر اشکال دارم و if اجرا نمی شود لطفا راهنمایی کنید.
    adad = input()
    list = adad.split()
    print(list)
    x1 = list[0]
    x2 = list[1]
    x3 = list[2]
    x1 = int(x1)
    x2 = int(x2)
    x3 = int(x3)
    if x1 > x2 and x2 > x3:
    print(list)
    #x1 = list[0]
    #x2 = list[1]
    #x3 = list[2]
    #x1 = int(x1)
    #x2 = int(x2)
    #x3 = int(x3)
    print(x1)
    print(x2)
    print(x3)
    b = max(list)
    print (b)
    k = min(list)
    kamtarin_masafat = b - k
    print(kamtarin_masafat)
    else:

    list.sort()
    x1 = list[0]
    x2 = list[1]
    x3 = list[2]
    x1 = int(x1)
    x2 = int(x2)
    x3 = int(x3)
    #print (b)
    #print (k)
    kamtarin_masafat = (x3-x2) + (x2-x1)
    print(kamtarin_masafat)