पायथन: N बार सूचीबद्ध करने के लिए आइटम जोड़ें


93

ऐसा लगता है कि कुछ पायथन के लिए एक शॉर्टकट होगा। मैं एक आइटम को एन सूची में जोड़ना चाहता हूं, प्रभावी रूप से ऐसा करने के लिए:

l = []
x = 0
for i in range(100):
    l.append(x)

यह मुझे प्रतीत होगा कि इसके लिए एक "अनुकूलित" विधि होनी चाहिए, जैसे कुछ:

l.append_multiple(x, 100)

है?


9
समाप्त होने के l.extend([x] * 100)बाद से यह मेरी स्थिति के लिए सबसे उपयुक्त है। सबसे व्यापक होने के लिए एम्बर को उत्तर क्रेडिट मिलता है। धन्यवाद!
तोजी

4
सुनिश्चित करें कि आप कुछ भी गैर-तुच्छ उपयोग करने से पहले पायथन के संदर्भ शब्दार्थ को समझ लें। एक्स के लिए जोड़ा गया एक्स सभी एक ही एक्स हैं, इसलिए उनमें से एक को उत्परिवर्तित करना उन सभी को प्रभावित करता है (उन सभी में से एक, जिसे 100% कहा जाता है)।
कार्ल केनचेल

1
स्पष्टीकरण के लिए: मैं इसे पूर्णांक के लिए उपयोग कर रहा हूं, इसलिए मेरा उपयोग सुरक्षित है।
ताजी

जवाबों:


136

अपरिवर्तनीय डेटा प्रकारों के लिए:

l = [0] * 100
# [0, 0, 0, 0, 0, ...]

l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]

उन मानों के लिए जिन्हें संदर्भ द्वारा संग्रहीत किया जाता है और आप बाद में संशोधित करना चाहते हैं (जैसे उप-सूचियाँ, या डाइक)

l = [{} for x in range(100)]

(यही कारण है कि पहली विधि केवल निरंतर मूल्यों के लिए एक अच्छा विचार है, जैसे कि ints या स्ट्रिंग्स, क्योंकि <list>*<number>सिंटैक्स का उपयोग करते समय केवल एक उथले प्रतिलिपि होती है , और इस प्रकार यदि आप कुछ पसंद करते हैं [{}]*100, तो आप 100 संदर्भों के साथ समाप्त करेंगे। एक ही शब्दकोश के लिए - तो उनमें से एक को बदलने से उन सभी को बदल दिया जाएगा। चूंकि ints और तार अपरिवर्तनीय हैं, यह उनके लिए कोई समस्या नहीं है।)

यदि आप किसी मौजूदा सूची में जोड़ना चाहते हैं, तो आप extend()उस सूची की विधि का उपयोग कर सकते हैं (उपरोक्त तकनीकों के माध्यम से जोड़ने के लिए चीजों की सूची के निर्माण के साथ संयोजन में):

a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]

2
या दोनों सुझावों को उस समय के रूप में संयोजित करें a.extend(b*n)जहां nआप b में तत्वों को दोहराना चाहते हैं
DarkCygnus

26

अंत तक एक सूची समझ जोड़ने के लिए विस्तार का उपयोग करें।

l.extend([x for i in range(100)])

देखें अजगर डॉक्स अधिक जानकारी के लिए।


6

Itertools सूची विस्तार के साथ संयुक्त दोहराते हैं।

from itertools import repeat
l = []
l.extend(repeat(x, 100))

6

मुझे एक असाइनमेंट के लिए दूसरे रास्ते पर जाना था लेकिन यह वही है जो मैंने खत्म किया।

my_array += ([x] * repeated_times)


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