Python मध्ये नवीन सूची तयार करण्यासाठी विद्यमान सूची (अॅरे) मधील केवळ ते घटक काढून किंवा हटवून जे काही विशिष्ट अटी पूर्ण करतात, किंवा बदली किंवा रूपांतरणे करून, सूची आकलन वापरा.
नमुना कोडसह येथे खाली स्पष्ट केले आहे.
- सूची आकलन नोटेशनचे मूलभूत स्वरूप
- सूचीच्या सर्व घटकांवर प्रक्रिया लागू करा
- निकष पूर्ण करणार्या सूचीमधून घटक काढा आणि हटवा
- सूचीच्या अटी पूर्ण करणारे घटक बदला किंवा रूपांतरित करा
स्ट्रिंगच्या सूचीच्या विशिष्ट उदाहरणांसाठी खालील लेख पहा.
निकषांची पूर्तता न करणारे घटक यादृच्छिकपणे काढणे देखील शक्य आहे.
लक्षात ठेवा की याद्या विविध प्रकारचे डेटा संचयित करू शकतात आणि अॅरेपेक्षा काटेकोरपणे भिन्न आहेत. मेमरी आकार आणि मेमरी पत्ते किंवा मोठ्या डेटाची संख्यात्मक प्रक्रिया आवश्यक असलेल्या प्रक्रियांमध्ये तुम्हाला अॅरे हाताळायचे असल्यास, अॅरे (मानक लायब्ररी) किंवा NumPy वापरा.
खालील यादी एक उदाहरण आहे
l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
सूची आकलन नोटेशनचे मूलभूत स्वरूप
सूचीमधून नवीन सूची तयार करताना, लूपपेक्षा यादीचे आकलन लिहिणे सोपे असते.
[expression for any variable name in iterable object if conditional expression]
एक अभिव्यक्ती एखाद्या घटकावर लागू केली जाते जी पुनरावृत्ती करण्यायोग्य ऑब्जेक्टची सशर्त अभिव्यक्ती पूर्ण करते (जसे की सूची किंवा ट्यूपल) आणि नवीन सूचीचा घटक बनते. “जर सशर्त अभिव्यक्ती” वगळली जाऊ शकते, अशा परिस्थितीत अभिव्यक्ती सर्व घटकांवर लागू केली जाते.
नेस्टेड लिस्ट कॉम्प्रिहेन्शन नोटेशनसह अधिक तपशीलांसाठी खालील लेख पहा.
- संबंधित:पायथन सूची आकलन कसे वापरावे
सूचीच्या सर्व घटकांवर प्रक्रिया लागू करा
उदाहरणार्थ, जर तुम्हाला सूचीतील सर्व घटकांवर काही प्रक्रिया लागू करायची असेल, तर वरील यादी आकलन अभिव्यक्तीमध्ये इच्छित प्रक्रियेचे वर्णन करा.
l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]
l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']
हे संख्यांच्या सूची आणि स्ट्रिंगच्या सूचींमध्ये रूपांतरित करण्यासाठी वापरले जाऊ शकते.
निकष पूर्ण करणार्या सूचीमधून घटक काढा आणि हटवा
जर घटक केवळ सशर्त अभिव्यक्तीद्वारे निवडायचा असेल, तर त्यावर अभिव्यक्तीद्वारे प्रक्रिया केली जात नाही, म्हणून ते खालील फॉर्म घेते
[variable name for variable name in original list if conditional expression]
एक नवीन सूची व्युत्पन्न केली जाते ज्यामधून केवळ अट पूर्ण करणारे घटक (ज्या घटकांसाठी सशर्त अभिव्यक्ती सत्य आहे) काढली जाते.
l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]
l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]
जर “सशर्त अभिव्यक्ती” “जर सशर्त अभिव्यक्ती नसल्यास” वर सेट केली असेल तर ते नकारार्थी बनते आणि केवळ अट पूर्ण न करणारे घटक (ज्या घटकांसाठी सशर्त अभिव्यक्ती असत्य आहे) निवडले आणि काढले जाऊ शकतात. दुसऱ्या शब्दांत, एक नवीन यादी तयार केली जाते ज्यामधून अट पूर्ण करणारे घटक काढून टाकले जातात.
l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
अर्थात, समान परिणाम न वापरता समतुल्य सशर्त अभिव्यक्ती निर्दिष्ट करून प्राप्त केला जातो.
l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
सशर्त अभिव्यक्ती भाग अनेक अटी असू शकतात. नकारात्मक नोट्स देखील वापरल्या जाऊ शकतात.
l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]
l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]
सूचीच्या अटी पूर्ण करणारे घटक बदला किंवा रूपांतरित करा
वरील घटक निष्कर्षणाच्या उदाहरणामध्ये, अटी पूर्ण न करणारे घटक काढले गेले.
जर तुम्ही केवळ अटी पूर्ण करणाऱ्या घटकांवर बदली, रूपांतरणे इ. करू इच्छित असाल, तर सूची आकलन नोटेशनच्या अभिव्यक्ती भागावर टर्नरी ऑपरेटर लागू करा.
Python मध्ये, ternary operator खालीलप्रमाणे लिहिता येईल
True Value if Conditional Expression else False Value
a = 80
x = 100 if a > 50 else 0
print(x)
# 100
b = 30
y = 100 if b > 50 else 0
print(y)
# 0
हे थोडेसे क्लिष्ट आहे, परंतु सूची आकलन नोटेशन आणि टर्नरी ऑपरेटर यांचे संयोजन खालीलप्रमाणे आहे.
[True Value if Conditional Expression else False Value for any variable name in original list]
कंसात बंद केलेला भाग टर्नरी ऑपरेटर आहे (वास्तविक कोडमध्ये कंस आवश्यक नाहीत).
[(True Value if Conditional Expression else False Value) for any variable name in original list]
जर कोणतेही व्हेरिएबलचे नाव खरे किंवा चुकीच्या मूल्यांसाठी लिहिलेले असेल तर मूळ घटकाचे मूल्य जसे आहे तसे वापरले जाते. जर एखादी अभिव्यक्ती लिहिली असेल, तर त्या अभिव्यक्तीची प्रक्रिया लागू केली जाते.
l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]
l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]
l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]
l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]