मैं अपने पायथन मूल्यांकन पर काम कर रहा हूं और मुझे एक हाथ चाहिए :( इसलिए, कार्य इस समीकरण का उपयोग करना है: 10 * x -5 और केवल सकारात्मक संख्या प्रिंट करें; कार्य सूची समझ का उपयोग करने पर केंद्रित है, अंत में, मुझे अद्यतन सूची। मैंने वह सब किया लेकिन मैं यह नहीं समझ सका कि अद्यतन तत्वों को नई सूची में कैसे सम्मिलित/जोड़ना है, इसलिए यहां क्या किया गया है ..

lst =[]
Update_MyList = [lst.append(MyList[z])for z in range(len(MyList)) if (10*MyList[z]-5 > 0)]
Update_MyList.append(lst)
print(Update_MyList)

मुझे जो कुछ मिलता है वह है: [कोई नहीं, कोई नहीं, कोई नहीं, कोई नहीं, कोई नहीं]

0
user13619472 10 जुलाई 2021, 14:44

2 जवाब

सूची समझ का उपयोग करके ऐसा करने का सबसे आसान तरीका यहां दिया गया है। सबसे पहले, फ़ंक्शन मान बनाएं:

MyList1 = [10*x-5 for x in MyList]

फिर नकारात्मक मानों को फ़िल्टर करें:

MyList2 = [v for v in Mylist1 if v >= 0]

यहां मैंने शून्य मान बनाए रखा है, लेकिन आप v >= 0 को v > 0 में बदलकर उन्हें भी बाहर कर सकते हैं।

यह वैसे ही ठीक काम करता है, हालाँकि आप चाहें तो इन्हें मिला सकते हैं। आप स्पष्ट रूप से प्रति मूल्य एक से अधिक बार 10*x-5 का मूल्यांकन नहीं करना चाहते हैं, लेकिन आप MyList2 सीधे निम्नानुसार बना सकते हैं:

MyList2 = [v for v in (10*x-5 for x in MyList) if v >= 0]

यह मूल रूप से दोनों को जोड़ता है, पहले को अब एक जनरेटर के रूप में छोड़ दिया जाता है जिसे वास्तविक सूची में कभी विस्तारित नहीं किया जाता है। फिर से, फ़ंक्शन 10*x-5 का मूल सूची मान के अनुसार एक से अधिक बार मूल्यांकन नहीं किया जाता है। और फिर, आप v >= 0 या v > 0 का उपयोग इस पर निर्भर करते हुए कर सकते हैं कि आप शून्य को शामिल करना चाहते हैं या बहिष्कृत करना चाहते हैं।

यदि आप फ़िल्टर की स्थिति को विशिष्ट फ़ंक्शन 10*x-5 पर निर्भर बनाने के इच्छुक हैं, तो आप यह कर सकते हैं:

MyList2 = [v for x, v in enumerate(MyList) if v >= 0.5]

यह फ़्लोटिंग पॉइंट मानों जैसे 0.1, 0.6, आदि के साथ काम करेगा। यदि आप शून्य को बाहर करना चाहते हैं, तो आप v > 0.5 का उपयोग कर सकते हैं। मैं वास्तव में इस समाधान के साथ-साथ पिछले एक को पसंद नहीं करता, क्योंकि (1) यह फ़ंक्शन 10 * x-5 के लिए बहुत विशिष्ट है, और (2) यह फ़्लोटिंग पॉइंट का उपयोग कर रहा है, जो 0.5 के साथ सुरक्षित है लेकिन आम तौर पर कुछ नहीं आप सटीक तुलना के लिए उपयोग करना चाहते हैं।

1
Tom Karzes 10 जुलाई 2021, 12:13

तो मैंने इसे समझ लिया :)

Update_MyList = [10*MyList[z]-5 for z in range(len(MyList)) if (MyList[z] > 0)]
print(Update_MyList)
0
it's M 10 जुलाई 2021, 12:01