मान लें स्ट्रिंग की लंबाई हमेशा सम संख्या है,
>>> s = '12345678'
>>> t = iter(s)
>>> '-'.join(a+b for a,b in zip(t, t))
'12-34-56-78'
t
भी
>>> '-'.join(a+b for a,b in zip(s[::2], s[1::2]))
'12-34-56-78'
एल्गोरिथ्म जोड़े में स्ट्रिंग समूह के लिए है के साथ समाप्त किया जा सकता है, तो शामिल हो उन्हें -
चरित्र के साथ।
कोड इस तरह लिखा गया है। सबसे पहले, यह विषम अंकों और यहां तक कि अंकों में विभाजित है।
>>> s[::2], s[1::2]
('1357', '2468')
फिर the zip
function उन्हें tuples के एक iterable में गठबंधन करने के लिए प्रयोग किया जाता है।
>>> list(zip(s[::2], s[1::2]))
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')]
लेकिन टपल्स हम जो चाहते हैं वह नहीं हैं। यह तारों की एक सूची होनी चाहिए। यह
>>> [a+b for a,b in zip(s[::2], s[1::2])]
['12', '34', '56', '78']
अंत में हम str.join()
का उपयोग सूची गठबंधन करने के लिए सूची समझ का उद्देश्य है।
>>> '-'.join(a+b for a,b in zip(s[::2], s[1::2]))
'12-34-56-78'
कोड का पहला भाग एक ही विचार है, लेकिन स्ट्रिंग लंबा होने पर कम स्मृति का उपभोग करता है।
क्या आप ज़िप भाग को समझा सकते हैं? वह क्या कर रहा है – root
क्या होगा यदि लंबाई की लंबाई अजीब है? –
@ हैम: आखिरी चरित्र चलेगा। – kennytm