2011-10-18 14 views
6

मैं मूल्यों (L,R,U,D) और दो चर, d और newd की एक श्रृंखला है, उनमें से एक युक्त से मान हैं। मुझे यह जांचने की ज़रूरत है कि d और newd समान सबसेट (L,R या U,D) में हैं या नहीं।
मैं जानता हूँ कि मैं यह कर सकता:जांच करें कि दो चर दो अलग सेट, सूखी रास्ता

d in {'L','R'} and newd in {'U','D'} or d in {'U','D'} and newd in {'L','R'} 

यह वास्तव में रिटर्न False अगर वे दोनों L,R या U,D, और True अन्यथा में मान हैं। फिर भी, मुझे यह बहुत लापरवाह लगता है। DRY दृष्टिकोण के बारे में कुछ सुझाव?

उत्तर

4

क्या आप जानते हैं केवल दो सेट देखते हैं और अपने मूल्यों एक या दूसरे में होना चाहिए कि कि है, तो आप इसे इस को आसान बनाने में कर सकते हैं:

(d in set1) == (newd in set2) 

स्पष्टीकरण:

  • यदि डी सेट 1 में है और newd सेट 2 में है, तो == के दोनों पक्ष True हैं, इसलिए अभिव्यक्ति True लौटाती है।
  • यदि डी सेट 2 में है और नया सेट 1 में है, तो == के दोनों पक्ष False हैं, इसलिए अभिव्यक्ति True लौटाती है।
  • यदि वे एक ही सेट में हैं, तो == का एक पक्ष False और अन्य True लौटाएगा, इसलिए अभिव्यक्ति का परिणाम False होगा।
+0

नहीं बुरा सब पर ... मुझे आश्चर्य है कि अगर वहाँ इस उल्लेख के केवल एक सेट करने के लिए एक तरीका है, लेकिन हो सकता है कि संभव नहीं है। – etuardu

+0

@तुआर्डू: '(सेट 1 में डी)! = (सेट 1 में नया) 'भी काम करता है। –

+0

मेरा मतलब था कि एक सेट सिर्फ एक बार – etuardu

0

कैसे के बारे में:

In [8]: dmap = {'L':0, 'R':0, 'U':1, 'D':1} 

In [9]: dmap[d] != dmap[newd] 
Out[9]: False 
संबंधित मुद्दे