Ինչպե՞ս ջնջել իրական արժեքները Python ցուցակում:


Python-ում ցուցակները թերևս ամենից հաճախ օգտագործվող տվյալների կառուցվածքներից են, որոնք թույլ են տալիս մեզ պահել տարբեր տարրեր: Ժամանակ առ ժամանակ մենք կարող ենք հանդիպել այնպիսի հանգամանքների, երբ մենք իսկապես ցանկանում ենք հեռացնել բացահայտ տարրերը ցանկից: Այս հոդվածում մենք կքննարկենք հինգ տարբեր մեթոդներ Python ցուցակից True արժեքները հեռացնելու համար: Մենք կուսումնասիրենք ալգորիթմը, կտանք կոդի օրինակներ, ցույց կտանք արդյունքը և կփակենք մեթոդների հարաբերակցությունը:

Ներածություն

Դիտարկենք մի իրավիճակ, երբ մենք ունենք ցուցակ, որը պարունակում է բուլյան տիպի և տեղեկատվության տարբեր տեսակների համադրություն, և մենք պետք է հեռացնենք True-ի բոլոր իրադարձությունները այդ ցանկից: Python-ը մեզ տրամադրում է այս առաջադրանքն իրականացնելու մի քանի եղանակներ: Մենք կուսումնասիրենք 6 տարբեր մեթոդներ՝ տարբեր հակումների և օգտագործման դեպքերի նկատմամբ հատուկ խնամքի համար:

Եկեք 1st տեսնենք մուտքագրման և ելքի օրինակ:

Մուտք

[True, 2, False, True, 4, True, 6, True]

Արդյունք

[2, False, 4, 6]

Բացատրություն. True-ն բուլյան արժեք է, որը ներկայացնում է տրամաբանական True վիճակը: Կան 2 ներկառուցված հաստատուն բուլյան, որոնք ճիշտ են և սխալ:

Մեր նպատակն է հեռացնել True արժեքները ցանկից և թողնել, որ մնացած բոլոր արժեքները մնան: Վերոնշյալ մուտքագրում True-ը տեղի է ունենում 1,4,6,8 դիրքում (ոչ ինդեքս), որոնք հեռացվում են և հետևաբար մեզ թողնում են 2, False, 4 և 6 արժեքներից բաղկացած մնացած ցուցակը:

Մեթոդ 1. Միամիտ մեթոդ

Ալգորիթմ

  • Կատարեք delete_true_naive ֆունկցիա, որն ընդունում է տեղեկատվության ցանկը որպես իր պնդում:

  • Տեղադրեք ցուցակի փոփոխական 0-ի համար:

  • Թեև ցուցակը հենց տեղեկատվական ցուցակի երկարությունը չէ.

  • Ենթադրելով, որ ընթացիկ ցանկի տարրը True է, հեռացրեք այն՝ օգտագործելով pop() մեթոդը:

  • Ամեն դեպքում ցանկը ավելացրեք 1-ով։

  • Վերադարձեք փոփոխված տեղեկատվության ցանկը

Օրինակ

def delete_true_naive(input_list):
    index = 0
    while index < len(input_list):
        if input_list[index] == True:
            input_list.pop(index)
        else:
            index += 1
    return input_list
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Naive Method Output:", delete_true_naive(sample_list.copy()))

Արդյունք

Naive Method Output: [2, False, 4, 6]

Մեթոդ 2. Ցուցակի ըմբռնման օգտագործում

Ալգորիթմ

  • Ստեղծեք delete_true_list_comprehension հնարավորություն, որն ընդունում է տվյալների ցանկը որպես դրա հակասություն:

  • Օգտագործեք ցուցակի ընկալումը ևս մեկ ամփոփում կազմելու համար, որը միավորում է տվյալների ցանկից միայն այն բաղադրիչները, որոնք նույնական չեն Valid-ին:

  • Վերադարձեք նոր ամփոփագիրը։

Օրինակ

def delete_true_list_comprehension(input_list):
    return [element for element in input_list if element != True]

sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using list comprehension output:", delete_true_list_comprehension(sample_list.copy()))

Արդյունք

Using list comprehension output: [2, False, 4, 6]

Ռազմավարություն 3. Filter() ֆունկցիայի օգտագործում Lambda ֆունկցիայով

Ալգորիթմ

  • Ստեղծեք delete_true_filter հնարավորություն, որն ընդունում է տվյալների ցանկը որպես իր վիճարկում:

  • Օգտագործեք channel()-ի հնարավորությունը, որը մոտ է lambda-ին, որպեսզի զտեք տվյալների ցանկի բաղադրիչները, որոնք համեմատելի չեն Valid-ի հետ:

  • Մեկուսացված արդյունքը հետ դարձրեք ամփոփման՝ օգտագործելով rundown() հնարավորությունը:

  • Վերադարձեք զտված ցուցակը։

Օրինակ

def delete_true_filter(input_list):
    return list(filter(lambda x: x != True, input_list))
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using filter() Result:", delete_true_filter(sample_list.copy()))

Արդյունք

Using filter() Result: [2, False, 4, 6]

Ռազմավարություն 4. Օգտագործելով remove()

Ալգորիթմ

  • Կատարեք delete_true_remove ֆունկցիա, որը ճանաչում է տվյալների ցանկը որպես դրա հակասություն:

  • Օգտագործեք որոշակի ժամանակային շրջանակ՝ կրկնելու համար այն ժամանակի երկարությունը, որը հասանելի է Clear-ը տվյալների ցանկում:

  • Շրջանակի ներսում օգտագործեք elimin() տեխնիկան, որպեսզի վերացնեք Valid-ի էական առիթը ամփոփումից:

  • Վերադարձեք փոփոխված տվյալների ցանկը։

Օրինակ

def delete_true_remove(input_list):
    while True in input_list:
        input_list.remove(True)
    return input_list 
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using remove() Result:", delete_true_remove(sample_list.copy()))

Արդյունք

Using remove() Result: [2, False, 4, 6]

Մեթոդ 5. Օգտագործելով List Comprehension և enumerate() ֆունկցիաները

Ալգորիթմ

  • Կազմեք delete_true_enum ֆունկցիա, որն ընդունում է տեղեկատվության ցանկը որպես իր պնդում:

  • Օգտագործեք ցուցակի ըմբռնումը count() ֆունկցիայի հետ մեկտեղ՝ ընդգծելու համար տեղեկատվական ցուցակի միջոցով՝ միաժամանակ վերահսկելով յուրաքանչյուր տարրի ցուցակը և արժեքը:

  • Հիշեք միայն այն տարրերը նոր ցուցակի համար, որոնց արժեքը համարժեք չէ True-ին:

  • Վերադարձեք նոր ցուցակը։

Օրինակ

def delete_true_enum(input_list):
    return [value for index, value in enumerate(input_list) if value != True]
# Sample list
sample_list = [True, 2, False, True, 4, True, 6, True]
# Output
print("Using List Comprehension and enumerate() Output:", delete_true_enum(sample_list.copy()))

Արդյունք

Using List Comprehension and enumerate() Output: [2, False, 4, 6]

Մեթոդ 6. Օգտագործելով itertools.filterfalse()

itertools մոդուլը սովորաբար օգտագործվում է կրկնությունների սցենարների մշակման համար, իսկ filterfalse-ն օգտագործվում է վերադարձնելու արժեքներ, որոնք վերադարձնում են կեղծ արժեք նշված ֆունկցիայից: Այն վերցնում է 2 մուտքագրում՝ ֆունկցիա; կրկնելու օբյեկտ; Այն արժեքները, որոնք վերադարձնում է filterfalse-ն այն արժեքներն են, որոնք ֆունկցիային փոխանցվելուց հետո վերադարձնում են false (որպես արգումենտ):

Ալգորիթմ

  • Մենք առաջին հերթին ներմուծում ենք filterfalse() ֆունկցիան itertools մոդուլից:

  • Հաջորդ քայլը delete_true_itertools ֆունկցիայի ստեղծումն է, որն ընդունում է մուտքային ցուցակը որպես իր արգումենտ:

  • Այնուհետև մենք օգտագործում ենք filterfalse() լամբդա ֆունկցիայի հետ՝ ցանկից True արժեքները զտելու համար:

  • Դրանից հետո մենք ֆիլտրացված արդյունքը նորից վերածում ենք ցուցակի՝ օգտագործելով list() ֆունկցիան:

  • Վերջապես վերադարձրեք նոր ցուցակը առանց True արժեքների:

Օրինակ

from itertools import filterfalse

def delete_true_itertools(input_list):
    return list(filterfalse(lambda x: x == True, input_list))

sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using itertools.filterfalse() Result:", delete_true_itertools(sample_list.copy()))

Արդյունք

Using itertools.filterfalse() Result: [2, False, 4, 6]

Եզրակացություն

Այս գրառման մեջ մենք իմացանք Python-ի ցուցակից True արժեքներից ազատվելու 6 տարբեր եղանակների մասին, որոնք ներառում են միամիտ մոտեցումը, ցուցակի ըմբռնումը, ֆիլտր()՝ լամբդա ֆունկցիայի հետ, հեռացնել ֆունկցիան և ցուցակի ըմբռնումը զուգակցված enumerate-ի հետ։(). Վերջապես itertools մոդուլների ֆիլտրի կեղծ գործառույթը նույնպես հասանելի եղանակներից է: Լավագույն մոտեցումը կախված կլինի կոնկրետ օգտագործման դեպքից և կատարողականի պահանջներից, թեև ավելի փոքր ցուցակների դեպքում բոլոր մեթոդները կարող են արդյունավետ կերպով հեռացնել True արժեքները: