নীচের পাইথন কোডটি মাতলাব পটভূমি থেকে আসার সময় খুব দীর্ঘ বাতাসযুক্ত বলে মনে হয়
>>> a = [1, 2, 3, 1, 2, 3]
>>> [index for index,value in enumerate(a) if value > 2]
[2, 5]
মতলব কবে আমি লিখতে পারি:
>> a = [1, 2, 3, 1, 2, 3];
>> find(a>2)
ans =
3 6
পাইথনে এটি লেখার জন্য একটি ছোট হাত পদ্ধতি আছে, বা আমি কেবল দীর্ঘ সংস্করণটির সাথে লেগে আছি?
পাইথনের সিনট্যাক্সের জন্য যুক্তি সম্পর্কিত সমস্ত পরামর্শ এবং ব্যাখ্যা দেওয়ার জন্য আপনাকে ধন্যবাদ।
শূন্য ওয়েবসাইটটিতে নিম্নলিখিতগুলি সন্ধান করার পরে, আমি মনে করি যে আমি আমার পছন্দ মতো একটি সমাধান পেয়েছি:
http://docs.scipy.org/doc/numpy/user/basics.indexing.html#boolean-or-mask-index-arrays
উপরের আমার সমস্যার জন্য সেই ওয়েবসাইট থেকে তথ্য প্রয়োগ করা, নিম্নলিখিতগুলি দেবে:
>>> from numpy import array
>>> a = array([1, 2, 3, 1, 2, 3])
>>> b = a>2
array([False, False, True, False, False, True], dtype=bool)
>>> r = array(range(len(b)))
>>> r(b)
[2, 5]
নিম্নলিখিতগুলির পরে কাজ করা উচিত (তবে এটি পরীক্ষা করার জন্য পাইথনের দোভাষী আমার হাতে নেই):
class my_array(numpy.array):
def find(self, b):
r = array(range(len(b)))
return r(b)
>>> a = my_array([1, 2, 3, 1, 2, 3])
>>> a.find(a>2)
[2, 5]
[idx for idx in range(len(a)) if a[idx] > 2]? পাইথনে এটি করা কিছুটা বিশ্রী হওয়ার কারণ এটি অন্যান্য ভাষার মতো সূচিগুলি ব্যবহার করে না।