अजगर में एक सूची को दूसरी सूची में डालने का वाक्य विन्यास क्या है?


197

दो सूचियों को दिया:

x = [1,2,3]
y = [4,5,6]

वाक्य रचना क्या है:

  1. डालें xमें yऐसी है कि yअब की तरह दिखता है [1, 2, 3, [4, 5, 6]]?
  2. सभी वस्तुओं xको yइस तरह डालें कि yअब कैसा दिखता है [1, 2, 3, 4, 5, 6]?

रिवर्स लिस्टबी, थेंस [listA.insert (पॉज़, x) में x के लिए [लिस्टबी]]
जॉन मी

इस पोस्ट को भी देखें: stackoverflow.com/questions/5805892/…
जोस डी क्लोए

1
@ जॉनमोनी क्या आपका मतलब है listA.insert(pos, x) for x in listB[::-1]?
wizzwizz4

जवाबों:


360

क्या आपका मतलब है append?

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x.append(y)
>>> x
[1, 2, 3, [4, 5, 6]]

या मर्ज?

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x + y
[1, 2, 3, 4, 5, 6]
>>> x.extend(y)
>>> x
[1, 2, 3, 4, 5, 6] 

3
वह जगह है या एक नया उदाहरण देता है?
डेनियल मोलर

7
x.extend(y)जगह में है, x+yनई सूची लौटा रहा है। और x += y, जिसका उल्लेख यहां नहीं किया गया था, विस्तार के समान है।
विम

86

प्रश्न स्पष्ट नहीं करता है कि आप वास्तव में क्या हासिल करना चाहते हैं।

सूची में वह appendविधि है, जो सूची में इसके तर्क को जोड़ती है:

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.append(list_two)
>>> list_one
[1, 2, 3, [4, 5, 6]]

वहाँ भी extendविधि है, जो सूची से आइटम को तर्क के रूप में पारित करता है:

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.extend(list_two)
>>> list_one
[1, 2, 3, 4, 5, 6]

और हां, ऐसी insertविधि है जो समान रूप से कार्य करती है appendलेकिन आपको प्रविष्टि बिंदु को निर्दिष्ट करने की अनुमति देती है:

>>> list_one.insert(2, list_two)
>>> list_one
[1, 2, [4, 5, 6], 3, 4, 5, 6]

एक विशिष्ट प्रविष्टि बिंदु पर एक सूची का विस्तार करने के लिए आप सूची स्लाइसिंग का उपयोग कर सकते हैं (धन्यवाद, @florisla))

>>> l = [1, 2, 3, 4, 5]
>>> l[2:2] = ['a', 'b', 'c']
>>> l
[1, 2, 'a', 'b', 'c', 3, 4, 5]

सूची स्लाइसिंग काफी लचीली है क्योंकि यह किसी सूची में प्रविष्टियों की श्रेणी को किसी अन्य सूची की प्रविष्टियों की श्रेणी से बदलने की अनुमति देता है:

>>> l = [1, 2, 3, 4, 5]
>>> l[2:4] = ['a', 'b', 'c'][1:3]
>>> l
[1, 2, 'b', 'c', 5]

34
यदि आप किसी विशिष्ट सम्मिलन बिंदु पर 'विस्तारित' करना चाहते हैं, तो आप सूची स्लाइसिंग सिंटैक्स का उपयोग कर सकते हैं (देखें stackoverflow.com/a/7376026/1075152 )
florisla

5
@ फ्लोरिसला की टिप्पणी का स्वीकृत उत्तर होना चाहिए। किसी अनियंत्रित स्थान (अंत में नहीं) के स्थान पर किसी अन्य सूची में सूची सम्मिलित करना एकमात्र तरीका है।
बुनकर

1
@weaver हालांकि ऐसा करने का एकमात्र समाधान है (विशिष्ट सूचकांक पर विस्तार), यह मूल प्रश्न नहीं था।
फ्लोरिसला

@florisla यह पैदल सेना है।
बुनकर


3

आप भी कर सकते हैं ...

x += y

यह स्वीकार किए गए उत्तर पर एक टिप्पणी होनी चाहिए, क्योंकि वह उल्लेख करता है x + yऔर x += yकेवल एक ही चीज है लेकिन जगह में है।
HTNW

मेरे पास ऐसा करने के लिए प्रतिष्ठा नहीं है, लेकिन अगर कोई और हो सकता है!
user3707850

2

यदि आप किसी सूची (सूची 2) में तत्वों को अन्य सूची (सूची) के अंत में जोड़ना चाहते हैं, तो आप सूची विधि का उपयोग कर सकते हैं

list = [1, 2, 3]
list2 = [4, 5, 6]
list.extend(list2)
print list
[1, 2, 3, 4, 5, 6]

या यदि आप दो सूची को जोड़ना चाहते हैं तो आप + साइन का उपयोग कर सकते हैं

list3 = list + list2
print list3
[1, 2, 3, 4, 5, 6]

0

यदि हम बस करते हैं x.append(y), तो y को x में संदर्भित किया जाता है जैसे कि y में किए गए किसी भी परिवर्तन से प्रभावित x भी प्रभावित होगा। इसलिए अगर हमें केवल तत्वों को सम्मिलित करने की आवश्यकता है, तो हमें निम्नलिखित कार्य करना चाहिए:

x = [1,2,3] y = [4,5,6] x.append(y[:])

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.