2012-11-14 17 views
27

के साथ सूची आरंभ करें क्या यह बिना किसी लूप के सभी सूची मूल्यों को प्रारंभ किए बिना लूप संभव है? उदाहरण के लिए मैं सभी तत्वों की एन तत्वों की एक सूची चाहता हूं।उसी बूल वैल्यू

उत्तर

75

आप इस तरह यह कर सकते हैं: -

>>> [False] * 10 
[False, False, False, False, False, False, False, False, False, False] 

नोट: - ध्यान दें कि, आप एक ही मूल्य के साथ mutable types के list के साथ ऐसा कभी नहीं करना चाहिए, और आप की तरह आश्चर्य की बात व्यवहार देखेंगे नीचे उदाहरण में से एक: -

>>> my_list = [[10]] * 3 
>>> my_list 
[[10], [10], [10]] 
>>> my_list[0][0] = 5 
>>> my_list 
[[5], [5], [5]] 

जैसा कि आप देख सकते हैं, एक आंतरिक सूची में किए गए परिवर्तन, उन सभी में दिखाई देते हैं।

+10

यह बिल्कुल इस समस्या के लिए सही मुहावरा है:

यह N मूल्यों की एक सरणी, शून्य करने के लिए प्रारंभ पैदा करता है। हालांकि, जब आप एक म्यूटेबल प्रकार से निपट रहे हैं तो यह बिल्कुल गलत मुहावरे है: '[[]] * 10' के नए आने वालों के लिए कुछ आश्चर्यजनक परिणाम हैं :)। – mgilson

9
my_list = [False for i in range(n)] 

यह आपको अलग-अलग तत्वों को बदलने की अनुमति देगा क्योंकि यह प्रत्येक तत्व को स्वतंत्र रूप से बनाता है।

हालांकि, यह तकनीकी रूप से एक लूप है।

+5

क्यों न केवल 'रेंज (एन) '? – mgilson

+0

अच्छा बिंदु! मुझे लगता है कि जब मैं इसे टाइप कर रहा था तो मैंने वास्तव में इसके बारे में नहीं सोचा था। – Noah

+0

रेंज (एन) 0 से शुरू होगी, न कि 1। – Vatsal

3

जब अंतरिक्ष मायने रखता है, bytearray बेहतर विकल्प है। यह बूलियन समाधान की सूची की तुलना में लगभग पांच गुना अधिक कुशल है।

B = bytearray(N)