मुझे इस समस्या के बारे में सोचने में परेशानी हो रही है।

मेरे पास नीचे दिखाए गए अनुसार दो सूचियां हैं।

my_orig_list = [(None, None), (None, None), (None, None), (None, None),(None, None), (None, None)]
new_values = [('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e')]

मैं इसे अंतिम आउटपुट के रूप में (None, None) कैसे प्राप्त कर सकता हूं जैसा कि निम्नलिखित वांछित आउटपुट में दिखाया गया है?

my_new_list = [('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e'), (None, None)]

मुझे यह भी बताना चाहिए कि new_values की लंबाई समय-समय पर बदलेगी।

मैंने सूची की लंबाई निर्धारित करने और फिर एक ऐसा फ़ंक्शन लिखने के बारे में सोचा जो उन मानों को स्वैप कर देगा, लेकिन मुझे लगता है कि मैं इस अपेक्षाकृत सरल प्रक्रिया के आसपास अपना सिर लपेट नहीं सकता।

अगर यह पहले ही पूछा जा चुका है, तो मैं क्षमा चाहता हूं। हो सकता है कि मैं यह जानने के लिए शब्दावली को अच्छी तरह से नहीं जानता कि इसे क्या कहा जाएगा।

1
CENTURION 3 अप्रैल 2018, 07:00

3 जवाब

सबसे बढ़िया उत्तर

बस टुकड़ा करना इसे आसान बनाता है ..

my_orig_list[:len(new_values)] = new_values[:]

ध्यान रखें कि new_values[:] सूची को कॉपी करता है यानी उसकी दूसरी कॉपी बनाता है, जबकि बस कर रहा है।

my_orig_list[:len(new_values)] = new_values

इसका एक संदर्भ देंगे, दोनों इस मामले में तब तक काम करेंगे जब तक आप new_values में हेरफेर नहीं करते हैं, मैं कभी भी new_values[:] की सिफारिश करूंगा

3
P.hunter 3 अप्रैल 2018, 04:06

नीचे हो सकता है:

new_values.extend(my_orig_list[:-len(new_values)])
0
Rehan Azher 3 अप्रैल 2018, 04:06

आप अपने नए मानों के माध्यम से पुनरावृति कर सकते हैं, और अपने मूल मानों को इस तरह अपडेट करने के लिए प्रत्येक सरणी की अनुक्रमणिका का उपयोग कर सकते हैं:

for i in range(len(new_values)):
    my_orig_values[i] = new_values[i]

यह my_orig_values ​​के पहले मान को new_values ​​के पहले मान पर सेट करेगा, और इसी तरह, new_values ​​के अंत तक

1
Richard Stoeffel 3 अप्रैल 2018, 04:08