2016-08-16 5 views
5

सूची में केवल युगल कैसे खोजें?सूची पायथन में केवल युगल कैसे खोजें और छोड़ें?

  1. तीन सूची (ए, बी, सी), एक संग्रह (dict)
  2. लंबे: एल्गोरिथ्म

    import collections 
    a = [1,2,3,4,5,2,4,5] 
    b = [] 
    
    for x,y in collections.Counter(a).items(): 
        if y>1: 
         b.append(x) 
    
    print(b) # [2, 4, 5] 
    
    c = [] 
    for item in a: 
        if item in b: 
         c.append(item) 
    
    print(c) # [2, 4, 5, 2, 4, 5] 
    

    की मेरी संस्करण ऐसे ग

    कोड दोष के रूप में परिणाम को पाने की जरूरत है कोड

मुझे छुट्टी सूची युगल मूल्यों की आवश्यकता है, उदाहरण के लिए। एक्स = [1,2,2,2,3,4,5,6,6,7], [2,2,2,6,6] की आवश्यकता नहीं है [2,6]

+0

हां यह सही है, क्योंकि सी सूची प्रिंट (सी) # [2, 4, 5, 2, 4, 5] – Igor

उत्तर

14
from collections import Counter 

a = [1, 2, 3, 4, 5, 2, 4, 5] 
counts = Counter(a) 
print([num for num in a if counts[num] > 1]) 
+1

गणनाओं का उपयोग एक '' x के लिए x, y x में counts.items() के रूप में भी कर सकता है। यदि वाई> 1] ' – sberry

+1

हालांकि, अगर आदेश महत्वपूर्ण है तो पोस्ट समाधान सबसे अच्छा है। – sberry

+1

ओपी को सूची में वापस आने के लिए डुप्लीकेट की आवश्यकता होती है। चूंकि यह एक शब्दकोश है, इसलिए आइटमों पर पुनरावृत्ति करना ऐसा नहीं करेगा। – Karin

5

सबसे प्रभावी तरीका नहीं है, लेकिन बहुत संक्षेप में:

a = [1,2,3,4,5,2,4,5] 
b = [x for x in a if a.count(x) > 1] 
print(b) 
+0

हां, 'list.count' को हर बार पूरी सूची स्कैन करना है, इसलिए यह Karin के O (n) समाधान की तुलना में ओ (एन^2) है। ओटीओएच, यदि 'ए 'बहुत छोटा है, तो यह _might_ तेज हो जाएगा, क्योंकि काउंटर बिल्कुल तेज़ नहीं है, भले ही यह ओ (एन) में चलता है। –

+2

यह सही है। करेन का समाधान कुशल और सुरुचिपूर्ण है। कोड का प्रकार जो पढ़ने के लिए आनंद ले रहा है। –

1

@ केरिन लगभग मुझे लगता था, लेकिन अंतिम परिणाम एक सेट नहीं होगा।

from collections import Counter 

a = [1, 2, 3, 4, 5, 2, 4, 5] 
counts = Counter(a) 
print({k for k, v in counts.items() if v >= 2}) 

संपादित करें: आह, "छोड़ ही दोगुना हो जाता है"

print([x for x in a if counts[x] >= 2]) 

EDIT2: ओपी द्वारा अतिरिक्त टिप्पणी स्पष्टीकरण मूल्यों के लिए एक डबल या अधिक लगातार के साथ कुछ भी साथ।

+1

ओपी को एक सूची की आवश्यकता होती है जिसमें डुप्लीकेट होते हैं ("मुझे छुट्टी सूची मानों की आवश्यकता है, न केवल अद्वितीय")। आवश्यक आउटपुट '[2, 4, 5, 2, 4, 5]' है। मुझे व्याख्या करने में थोड़ा समय लगा :) :) – Karin

+1

इसके अलावा, ओपी पायथन 3.x का उपयोग कर रहा है! ;) – dalanmiller

+1

इसके अलावा, संपादन अभी भी उसी कारण से काम नहीं करेगा। यदि गणना एक शब्दकोश है, तो कुंजी हमेशा अनूठी रहेंगी ... इसलिए आप अभी भी सूची में डुप्लिकेट वापस नहीं करेंगे। – Karin

संबंधित मुद्दे