2012-08-10 13 views
5

मुझे pattern matching सुविधा Racket में बहुत शक्तिशाली मिली।क्या इस तरह पाइथन में पैटर्न मिलान कार्य हैं?

> (match '(1 2 3) [(list a b c) (list c b a)]) 

'(3 2 1) 

> (match '(1 2 3) [(list 1 a ...) a]) 

'(2 3) 

> (match '(1 2 3) 
    [(list 1 a ..3) a] 
    [_ 'else]) 

'else 

> (match '(1 2 3 4) 
    [(list 1 a ..3) a] 
    [_ 'else]) 

'(2 3 4) 

> (match '(1 2 3 4 5) 
    [(list 1 a ..3 5) a] 
    [_ 'else]) 

'(2 3 4) 

> (match '(1 (2) (2) (2) 5) 
    [(list 1 (list a) ..3 5) a] 
    [_ 'else]) 

'(2 2 2) 

क्या पाइथन में ऐसा करने के लिए समान वाक्यविन्यास चीनी या पुस्तकालय है?

उत्तर

3

कोई वहाँ नहीं है, अजगर के पैटर्न मिलान इस तरह खोल केवल iterable है:

>>> (x, y) = (1, 2) 
>>> print x, y 
1 2 

या समारोह परिभाषा:

>>> def x((x, y)): 
    ... 

या अजगर 3 में:

>>> x, *y = (1, 2, 3) 
>>> print(x) 
1 
>>> print(y) 
[2, 3] 

लेकिन external libraries में से कुछ हैं जो पैटर्न मिलान का एहसास करते हैं।

संबंधित मुद्दे