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




list (16)

अधिक सूचियों के लिए एक सामान्य तरीका के रूप में आप उन्हें एक सूची में डाल सकते हैं और itertools.chain.from_iterable() 1 फ़ंक्शन का उपयोग कर सकते हैं जो THIS उत्तर पर आधारित है, नेस्टेड सूची को फ़्लैट करने का सबसे अच्छा तरीका है:

>>> l=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> import itertools
>>> list(itertools.chain.from_iterable(l))
[1, 2, 3, 4, 5, 6, 7, 8, 9] 

1. ध्यान दें कि chain.from_iterable() python => 2.6 में उपलब्ध है। अन्य संस्करणों में chain(*l) उपयोग करें chain(*l)

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

उदाहरण:

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

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

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

आप extend समारोह के लिए जा सकते हैं।

l1 = [1,2,3]
l2 = [4,5,6]
l1.extend(l2)
print l1

आउटपुट: [1,2,3,4,5,6]


आप अद्वितीय मानों की विलय सूची प्राप्त करने के लिए सेट का उपयोग कर सकते हैं

mergedlist = list(set(listone + listtwo))

आप उन्हें संयोजित करने के लिए + ऑपरेटर का उपयोग कर सकते हैं:

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

mergedlist = listone + listtwo

आउटपुट:

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

आप फ़ंक्शन का extends कर सकते हैं

listone.extends(listtwo)

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

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

पायथन 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]
>>> 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]

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

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

sorted(joinedList)

return joinedList

यदि आप प्लस ऑपरेटर ( + ) का उपयोग नहीं कर सकते हैं, तो आप __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]

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


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

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

यह ध्यान देने योग्य है कि itertools.chain फ़ंक्शन तर्कों की परिवर्तनीय संख्या स्वीकार करता है:

>>> l1 = ['a']; l2 = ['b', 'c']; l3 = ['d', 'e', 'f']
>>> [i for i in itertools.chain(l1, l2)]
['a', 'b', 'c']
>>> [i for i in itertools.chain(l1, l2, l3)]
['a', 'b', 'c', 'd', 'e', 'f']

यदि एक पुनरावृत्त (tuple, सूची, जेनरेटर, आदि) इनपुट है, तो from_iterable वर्ग विधि का उपयोग किया जा सकता है:

>>> il = [['a'], ['b', 'c'], ['d', 'e', 'f']]
>>> [i for i in itertools.chain.from_iterable(il)]
['a', 'b', 'c', 'd', 'e', 'f']

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

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

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

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

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

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

import itertools

A = list(zip([1,3,5,7,9],[2,4,6,8,10]))
B = [1,3,5,7,9]+[2,4,6,8,10]
C = list(set([1,3,5,7,9] + [2,4,6,8,10]))

D = [1,3,5,7,9]
D.append([2,4,6,8,10])

E = [1,3,5,7,9]
E.extend([2,4,6,8,10])

F = []
for a in itertools.chain([1,3,5,7,9], [2,4,6,8,10]):
    F.append(a)


print ("A: " + str(A))
print ("B: " + str(B))
print ("C: " + str(C))
print ("D: " + str(D))
print ("E: " + str(E))
print ("F: " + str(F))

आउटपुट:

A: [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
B: [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
C: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
D: [1, 3, 5, 7, 9, [2, 4, 6, 8, 10]]
E: [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
F: [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]

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

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





list