जंजीर तुलना को सरल बनाएं


254

मेरे पास पूर्णांक मान है x, और मुझे यह जाँचने की आवश्यकता है कि क्या यह एक startऔर endमानों के बीच है , इसलिए मैं निम्नलिखित कथन लिखता हूं:

if x >= start and x <= end:
    # do stuff

इस कथन को रेखांकित किया गया है, और टूलटिप मुझे बताता है कि मुझे अवश्य करना चाहिए

जंजीर तुलना को सरल बनाएं

जहां तक ​​मैं बता सकता हूं, वह तुलना जितनी सरल है, उतनी ही अच्छी है। मैंने यहाँ क्या याद किया?


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

जवाबों:


432

पायथन में आप तुलनात्मक संचालन "श्रृंखला" कर सकते हैं जिसका अर्थ है कि वे "और" एक साथ एड हैं। आपके मामले में, यह इस तरह होगा:

if start <= x <= end:

संदर्भ: https://docs.python.org/3/reference/expressions.html#comparison


2
धन्यवाद, मुझे नहीं पता था कि आप पायथन में ऐसा कर सकते हैं। क्या सच में इस पर मेरा सिर खुजला रहा था।
ब्रायन मैककुलघ

18
आदमी यह है कि चीजें कैसी होनी चाहिए। लेकिन अन्य भाषाओं से आने वाले आप अपने आदर्शों को भूल जाते हैं और यह भी नहीं सोचते हैं, कि चीजें वैसी ही हो सकती हैं, जैसी उन्हें होनी चाहिए। लेकिन यही कारण है कि अजगर आश्चर्यजनक है, ठीक ऐसी चीजों के कारण :)
हकीशिन

क्या आप किसी भी "आधिकारिक" स्रोतों के बारे में जानते हैं जो दूसरे पर जंजीर शैली की सिफारिश करते हैं? कौन सा अधिक "मुहावरेदार" पायथन है?
रे

मुझे पता नहीं, कभी-कभी मुझे लगता है कि अजगर ने अधिक रेलिंग को फेंक दिया। x == y == z एक मान के साथ विफल हो जाता है जब x, y, z पंडों की श्रृंखला होते हैं
बॉलपॉइंटबैन

@ बॉलपॉइंटबैन: बहुत सारी चीजें उस तरह से काम नहीं करती हैं जैसे आप पंडों में उम्मीद कर सकते हैं, यहां तक ​​कि नहीं भी x == y and y == z
जॉन Zwinck

12

इसे फिर से लिखा जा सकता है:

start <= x <= end:

या:

r = range(start, end + 1) # (!) if integers
if x in r:
    ....

5
सीमा एक खराब विकल्प है क्योंकि बड़ी शुरुआत और अंत के लिए आप एक अनावश्यक सूची बना रहे हैं।
बुरहान खालिद

1
@BurhanKhalid वास्तव में, लेकिन मुझे लगता है कि यह ओपी के लिए ध्यान देने योग्य है।
मारून

7
Python3 में, रेंज हैंडल में "अच्छी तरह से " होता है , इसलिए कोई सूची उत्पन्न नहीं होती है।
जोशनाउम

2
@MarounMaroun के बाद से अजगर 3, रेंज फ़ंक्शन पूर्व xrange की तरह व्यवहार करता है, यह भी ध्यान देने योग्य है
डीवीडीवॉक

5
के उपयोग के संबंध में विवरण के लिए if x in range(...), " पायथन 3 में इतनी तेजी से" 1000000000000000 (1000000000000001) "क्यों है? "
केविन जे। चेस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.