मेरे पास वैक्टर (पायथन में) की एक सूची है जिसे मैं सामान्य बनाना चाहता हूं, जबकि साथ ही वेक्टरों को हटाकर मूल रूप से छोटे मानदंडों को हटाते हैं।एक साथ फ़िल्टरिंग और परिवर्तन के लिए एक सूची समझ में इंटरमीडिएट वैरिएबल
इनपुट सूची है, उदा। 0.5
मैं बस जरूरत है -
a = [(1,1),(1,2),(2,2),(3,4)]
और मैं निर्गम (x * एन, y * एन) एन = (एक्स * 2 + y * 2) ** के साथ की जरूरत होने के लिए
an = [ (x**2+y**2)**0.5 for x,y in a ]
यह भी सिर्फ एक सामान्यीकृत एक्स भी उदाहरण के लिए स्टोर करने के लिए, आसान होगा, लेकिन क्या मैं चाहता हूँ यह अस्थायी चर है "n: मानदंडों, उदाहरण के लिए, कि एक सूची समझ के साथ आसान होगा ", दो गणनाओं में उपयोग करने के लिए, और इसे फेंक दें।
मैं सिर्फ लैम्ब्डा फ़ंक्शन का उपयोग नहीं कर सकता क्योंकि मुझे सूची को फ़िल्टर करने के लिए एन की भी आवश्यकता है। तो सबसे अच्छा तरीका क्या है?
अभी मैं इस नेस्टेड सूची समझ यहाँ उपयोग कर रहा हूँ (भीतरी सूची में एक अभिव्यक्ति के साथ):
a = [(1,1),(1,2),(2,2),(3,4)]
[(x*n,y*n) for (n,x,y) in (((x**2.+y**2.)**-0.5 ,x,y) for x,y in a) if n < 0.4]
# Out[14]:
# [(0.70710678118654757, 0.70710678118654757),
# (0.60000000000000009, 0.80000000000000004)]
भीतरी सूची एक अतिरिक्त मूल्य (एन) के साथ tuples उत्पन्न करता है, और उसके बाद मैं इन मानों का उपयोग गणना और फ़िल्टरिंग के लिए। क्या यह वास्तव में सबसे अच्छा तरीका है? क्या कोई भयानक अक्षमता है जिसके बारे में मुझे अवगत होना चाहिए?
धन्यवाद, कि अच्छा लगता है। एक इटरेटर फ़ंक्शन इस तरह की कुछ जटिल के लिए वास्तव में बेहतर है। – dividebyzero
वेक्टर चयन के बारे में, एन वास्तव में मानक का पारस्परिक है, यह ** - 0.5 है, और ** 0.5 नहीं है। यही कारण है कि एक विभाजन के बजाय एन द्वारा गुणा।ऐसा इसलिए है क्योंकि मैं या तो एक्सपोनिएशन या उदाहरण का उपयोग करने के बजाय लगभग पारस्परिक वर्ग रूट की गणना करने के लिए एक विशिष्ट फ़ंक्शन का उपयोग करने की योजना बना रहा हूं। 1/(sqrt (x))। – dividebyzero