मैंने सूची में तत्वों को स्थानापन्न करने का प्रयास किया

# the raw data 
square = ['(', ')', '.', '^', '-']
# the result I want
square = ['[', ']', '.', '^', '-']

remove और insert के तरीकों का उपयोग करके कई चरणों के साथ

    In [21]: square.remove('(')
    In [22]: square.remove(')')
    In [23]: square.insert(0, '[')
    In [24]: square.insert(1, ']')
    In [25]: square
    Out[25]: ['[', ']', '.', '^', '-']

इस तरह की समस्या को सीधे तरीके से कैसे हल किया जाए?

3
Calculus 26 मार्च 2018, 11:40

3 जवाब

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

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

replacements = {'(': '{', ')': '}'}
square = [replacements.get(elem, elem) for elem in square]
11
Daniel Roseman 26 मार्च 2018, 08:42
dict_ = {'(':'[',')':']'}
data = [dict_[val] if val in dict_ else val for val in square ]
>>>['[', ']', '.', '^', '-']

पुनः मॉड्यूल का उपयोग करने के साथ:

import re

print(list(re.sub(r'\(\)','\[\]',''.join(square))))
>>>['[', ']', '.', '^', '-']
2
Pradam 26 मार्च 2018, 08:53

सबसे सरल समाधान, यदि आप उन तत्वों की अनुक्रमणिका को ठीक से जानते हैं जिन्हें आप बदलना चाहते हैं, सूची अनुक्रमणिका का उपयोग कर रहा है:

square = ['(', ')', '.', '^', '-']

square[0] = '['
square[1] = ']'

print square

>>> ['[', ']', '.', '^', '-']

दूसरी ओर, यदि आप सूची में अपने ब्रैकेट की स्थिति के बारे में सुनिश्चित नहीं हैं तो आप enumerate() का उपयोग कर सकते हैं और एक ही लूप में आप अपने चक्र के तत्वों के इंडेक्स और मान दोनों तक पहुंचने में सक्षम होंगे:

square = ['(', ')', '.', '^', '-']

for index, element in enumerate(square):
    if element == '(':
        square[index] = '['
    if element == ')':
        square[index] = ']'

print square

>>> ['[', ']', '.', '^', '-']

मेरी राय में, वे सबसे सीधे तरीके हैं।

अगला कदम, अगर मैं सुझाव दे सकता हूं, सूचियों (और / या शब्दकोशों) की समझ का उपयोग करके अधिक पाइथोनिक होना है।

एक विचार प्राप्त करने के लिए डैनियल रोसमैन के उत्तर में गहना की जाँच करें।

5
Pitto 11 अप्रैल 2018, 19:51