Ինչպե՞ս ջնջել իրական արժեքները 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 արժեքները: