[python] पायथन में दो सूचियों को कैसे सम्मिलित करें?


11 Answers

एक जनरेटर बनाना भी संभव है जो दोनों सूचियों में आइटमों पर आसानी से पुनरावृत्त हो। यह आपको एक नई सूची में आइटम कॉपी किए बिना प्रोसेसिंग के लिए चेन सूचियों (या किसी भी पुनरावर्तनीय) को एक साथ करने की अनुमति देता है:

import itertools
for item in itertools.chain(listone, listtwo):
   # do something with each list item
Question

मैं पायथन में दो सूचियों को कैसे जोड़ूं?

उदाहरण:

listone = [1, 2, 3]
listtwo = [4, 5, 6]

अनुमानित परिणाम:

>>> joinedlist
[1, 2, 3, 4, 5, 6]



यदि आप प्लस ऑपरेटर ( + ) का उपयोग नहीं कर सकते हैं, तो आप __add__ फ़ंक्शन का उपयोग कर सकते हैं:

listone = [1,2,3]
listtwo = [4,5,6]

result = list.__add__(listone, listtwo)
print(result)

>>> [1, 2, 3, 4, 5, 6]

वैकल्पिक रूप से, यदि आपको dunders के उपयोग को पसंद नहीं है तो आप operator आयात का उपयोग कर सकते हैं:

import operator

listone = [1,2,3]
listtwo = [4,5,6]

result = operator.add(listone, listtwo)
print(result)

>>> [1, 2, 3, 4, 5, 6]

कोई तर्क दे सकता है कि यह थोड़ा और पठनीय है।




सूचियों की सूची जोड़ने का एक संक्षिप्त तरीका है

li = [[1,2,3], [4,5,6], [7,8,9]]
reduce(list.__add__,li)

जो हमें देता है

[1, 2, 3, 4, 5, 6, 7, 8, 9]



lst1 = [1,2]

lst2 = [3,4]

def list_combinationer(Bushisms, are_funny):

    for item in lst1:
        lst2.append(item)
        lst1n2 = sorted(lst2)
        print lst1n2

list_combinationer(lst1, lst2)

[1,2,3,4]



पायथन 3.3+ के साथ आप उपज का उपयोग कर सकते हैं:

listone = [1,2,3]
listtwo = [4,5,6]

def merge(l1, l2):
    yield from l1
    yield from l2

>>> list(merge(listone, listtwo))
[1, 2, 3, 4, 5, 6]

या, यदि आप पुनरावृत्तियों की मनमानी संख्या का समर्थन करना चाहते हैं:

def merge(*iters):
    for it in iters:
        yield from it

>>> list(merge(listone, listtwo, 'abcd', [20, 21, 22]))
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd', 20, 21, 22]



यह सवाल सीधे दो सूचियों में शामिल होने के बारे में पूछता है। हालांकि, जब आप कई सूचियों में शामिल होने का तरीका ढूंढ रहे हैं, तब भी यह खोज में बहुत अधिक है (जब आप शून्य सूचियों में शामिल होते हैं)। इस अधिक सामान्य दृष्टिकोण पर विचार करें:

a = [[1,2,3], [4,5,6], [7,8,9]]
reduce(lambda c, x: c + x, a, [])

आउटपुट होगा:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

ध्यान दें, यह a [] या [[1,2,3]] होने पर भी सही तरीके से काम करता है।

हालांकि, इसे itertools साथ अधिक कुशलता से किया जा सकता है:

a = [[1,2,3], [4,5,6], [7,8,9]]
list(itertools.chain(*a))

यदि आपको किसी list आवश्यकता नहीं है, लेकिन केवल एक पुनरावृत्त है, तो list() छोड़ दें list()

अद्यतन करें

टिप्पणियों में पैट्रिक कॉलिन्स द्वारा सुझाए गए वैकल्पिक भी आपके लिए काम कर सकते हैं:

sum(a, [])



list जोड़ने के लिए आप extend भी उपयोग कर सकते हैं दूसरे के अंत को जोड़ें:

listone = [1,2,3]
listtwo = [4,5,6]
mergedlist = []
mergedlist.extend(listone)
mergedlist.extend(listtwo)



यदि आप दो पुरानी सूचियां रखते हुए एक नई सूची चाहते थे:

joinedList = []
for i in listOne:
    joinedList.append(i)
for j in listTwo:
    joinedList.append(j)

sorted(joinedList)

return joinedList



यह काफी सरल है, मुझे लगता है कि यह tutorial में भी दिखाया गया था:

>>> listone = [1,2,3]
>>> listtwo = [4,5,6]
>>>
>>> listone + listtwo
[1, 2, 3, 4, 5, 6]



पायथन में दो सूचियों में शामिल होना:

>>> a = [1, 2, 3, 4]
>>> b = [1, 4, 6, 7]
>>> c = a + b
>>> c
[1, 2, 3, 4, 1, 4, 6, 7]

यदि आप कोई डुप्लिकेशन नहीं चाहते हैं:

>>> a = [1, 2, 3, 4, 5, 6]
>>> b = [5, 6, 7, 8]
>>> c = list(set(a + b))
>>> c
[1, 2, 3, 4, 5, 6, 7, 8]



जैसा कि पहले से ही कई लोगों द्वारा इंगित किया गया है, itertools.chain() जाने का तरीका है यदि किसी को दोनों सूचियों के लिए बिल्कुल उसी उपचार को लागू करने की आवश्यकता है। मेरे मामले में, मेरे पास एक लेबल और ध्वज था जो एक सूची से दूसरे में अलग था, इसलिए मुझे कुछ और जटिल की आवश्यकता थी। जैसा कि यह पता चला है, दृश्यों के पीछे itertools.chain() बस निम्न कार्य करता है:

for it in iterables:
    for element in it:
        yield element

( https://docs.python.org/2/library/itertools.html ), इसलिए मैंने यहां से प्रेरणा ली और इन पंक्तियों के साथ कुछ लिखा:

for iterable, header, flag in ( (newList, 'New', ''), (modList, 'Modified', '-f')):
    print header + ':'
    for path in iterable:
        [...]
        command = 'cp -r' if os.path.isdir(srcPath) else 'cp'
        print >> SCRIPT , command, flag, srcPath, mergedDirPath
        [...]

यहां समझने के मुख्य बिंदु यह हैं कि सूचियां केवल एक विशेष मामला है, जो कि किसी अन्य की तरह वस्तुएं हैं; और इसके for ... in पायथन for ... in लूप में ट्यूपल चर के साथ काम कर सकते हैं, इसलिए एक ही समय में एकाधिक चर पर लूप करना आसान है।




list(set(listone) | set(listtwo))

उपर्युक्त कोड, आदेश को संरक्षित नहीं करता है, प्रत्येक सूची से डुप्लिकेट हटा देता है (लेकिन समेकित सूची से नहीं)






Related



Tags

python python   list