खालीलपैकी प्रत्येक प्रकरणासाठी, Python मध्ये सूची (अॅरे) मध्ये डुप्लिकेट घटक (सर्व घटक अद्वितीय/युनिक आहेत) आहेत हे कसे ठरवायचे याचे वर्णन खालीलप्रमाणे आहे.
- घटकामध्ये सूची नसलेल्या सूचीसाठी
- घटकांच्या सूचीसह सूचीसाठी (द्वि-आयामी अॅरे, सूचीच्या सूची इ.)
सूचीमधून डुप्लिकेट घटक कसे काढायचे किंवा कसे काढायचे याबद्दल पुढील लेख पहा.
लक्षात ठेवा की याद्या विविध प्रकारचे डेटा संचयित करू शकतात आणि अॅरेपेक्षा काटेकोरपणे भिन्न आहेत. मेमरी आकार आणि मेमरी पत्ते किंवा मोठ्या डेटाची संख्यात्मक प्रक्रिया आवश्यक असलेल्या प्रक्रियांमध्ये तुम्हाला अॅरे हाताळायचे असल्यास, अॅरे (मानक लायब्ररी) किंवा NumPy वापरा.
सूचीमध्ये डुप्लिकेट घटक आहेत का ते निश्चित करा (जर घटकाची सूची नसेल)
जर घटकामध्ये अद्यतन करण्यायोग्य ऑब्जेक्ट नसेल जसे की सूची, सेट सेट प्रकाराचा कन्स्ट्रक्टर सेट() वापरा.
सेट प्रकार हा एक डेटा प्रकार आहे ज्यामध्ये कोणतेही डुप्लिकेट घटक नाहीत. जेव्हा एखादी सूची कन्स्ट्रक्टर सेट() ला दिली जाते, तेव्हा डुप्लिकेट व्हॅल्यूजकडे दुर्लक्ष केले जाते आणि फक्त युनिक व्हॅल्यूज असलेले एखादे ऑब्जेक्ट रिटर्न केले जाते.
या सेट प्रकारातील ऑब्जेक्ट आणि मूळ सूचीमधील घटकांची संख्या अंगभूत फंक्शन len() वापरून प्राप्त केली जाते आणि त्यांची तुलना केली जाते.
- घटकांची संख्या समान असल्यास, मूळ सूचीमध्ये कोणतेही डुप्लिकेट घटक नाहीत
- घटकांची संख्या भिन्न असल्यास डुप्लिकेट घटक मूळ सूचीमध्ये समाविष्ट केले जातात
डुप्लिकेट घटक नसल्यास असत्य आणि डुप्लिकेट घटक असल्यास सत्य मिळवणारी कार्ये खालीलप्रमाणे आहेत
def has_duplicates(seq):
return len(seq) != len(set(seq))
l = [0, 1, 2]
print(has_duplicates(l))
# False
l = [0, 1, 1, 2]
print(has_duplicates(l))
# True
उदाहरण एक सूची आहे, परंतु समान कार्य ट्यूपल्ससह वापरले जाऊ शकते.
बदल करण्यायोग्य (अपडेट करण्यायोग्य) वस्तू जसे की सूची प्रकार सेटचे घटक असू शकत नाहीत. म्हणून, घटक म्हणून सूची असलेल्या याद्या (द्वि-आयामी अॅरे, सूचीच्या सूची, इ.) परिणामी TypeError होईल. काउंटरमेजर खाली दर्शविले आहे.
l_2d = [[0, 1], [1, 1], [0, 1], [1, 0]]
# print(has_duplicates(l_2d))
# TypeError: unhashable type: 'list'
सूचीमध्ये डुप्लिकेट घटक आहेत का ते ठरवा (जर घटकाची यादी असेल)
घटकांची सूची असलेल्या सूचीच्या बाबतीत (जसे की सूचीची सूची), डुप्लिकेट घटक आहेत की नाही हे निर्धारित करण्यासाठी खालील कार्ये वापरली जाऊ शकतात.
def has_duplicates2(seq):
seen = []
unique_list = [x for x in seq if x not in seen and not seen.append(x)]
return len(seq) != len(unique_list)
l_2d = [[0, 0], [0, 1], [1, 1], [1, 0]]
print(has_duplicates2(l_2d))
# False
l_2d = [[0, 0], [0, 1], [1, 1], [1, 1]]
print(has_duplicates2(l_2d))
# True
सेट () च्या ऐवजी, सूची आकलन नोटेशन एक सूची तयार करते ज्याचे घटक केवळ अद्वितीय मूल्ये आहेत आणि घटकांच्या संख्येची तुलना केली जाते. तपशीलांसाठी पुढील लेख पहा.
हे फंक्शन त्या सूचीसाठी देखील वैध आहे ज्यात घटकांची सूची नाही.
l = [0, 1, 2]
print(has_duplicates2(l))
# False
l = [0, 1, 1, 2]
print(has_duplicates2(l))
# True
आत्तापर्यंतचे उदाहरण म्हणजे घटकांची सूची डुप्लिकेट आहे की नाही याचे निर्धारण (त्यात समान सूची आहे).
मूळ सूचीला एका परिमाणात सपाट केल्यानंतर प्रत्येक सूची ओव्हरलॅपचे घटक निर्धारित केले जाऊ शकतात.
l_2d = [[0, 1], [2, 3]]
print(sum(l_2d, []))
# [0, 1, 2, 3]
print(has_duplicates(sum(l_2d, [])))
# False
l_2d = [[0, 1], [2, 0]]
print(has_duplicates(sum(l_2d, [])))
# True
येथे, sum() चा वापर सूची सपाट करण्यासाठी केला जातो, परंतु itertools.chain.from_iterable() देखील वापरला जाऊ शकतो. याव्यतिरिक्त, तीन किंवा अधिक परिमाणांची सूची सपाट करताना, नवीन कार्य परिभाषित करणे आवश्यक आहे.