Python میں ایک نئی فہرست بنانے کے لیے صرف موجودہ فہرست کے ان عناصر کو نکال کر یا حذف کر کے جو کچھ شرائط کو پورا کرتے ہیں، یا تبدیلی یا تبدیلیاں انجام دے کر، فہرست کی فہمی کا استعمال کریں۔
ذیل میں نمونہ کوڈ کے ساتھ وضاحت کی گئی ہے۔
- فہرست فہم اشارے کی بنیادی شکل
- فہرست کے تمام عناصر پر عمل کا اطلاق کریں۔
- فہرست سے عناصر کو نکالیں اور حذف کریں جو معیار پر پورا اترتے ہیں۔
- فہرست کی شرائط کو پورا کرنے والے عناصر کو تبدیل یا تبدیل کریں۔
سٹرنگز کی فہرستوں کی مخصوص مثالوں کے لیے درج ذیل مضمون کو دیکھیں۔
- متعلقہ:ایسے عناصر کو نکالنا اور تبدیل کرنا جو ازگر میں تاروں کی فہرست (سرنی) کی شرائط کو پورا کرتے ہیں۔
تصادفی طور پر ایسے عناصر کو نکالنا بھی ممکن ہے جو معیار پر پورا نہیں اترتے۔
نوٹ کریں کہ فہرستیں مختلف قسم کے ڈیٹا کو محفوظ کر سکتی ہیں اور صفوں سے بالکل مختلف ہیں۔ اگر آپ ایسے پراسیس میں صفوں کو ہینڈل کرنا چاہتے ہیں جن کے لیے میموری کا سائز اور میموری ایڈریسز یا بڑے ڈیٹا کی عددی پروسیسنگ کی ضرورت ہوتی ہے، تو array (معیاری لائبریری) یا NumPy استعمال کریں۔
درج ذیل فہرست ایک مثال ہے۔
l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
فہرست فہم اشارے کی بنیادی شکل
فہرست سے ایک نئی فہرست تیار کرتے وقت، فہرست کی تفہیم لوپس کے مقابلے میں لکھنا آسان ہے۔
[expression for any variable name in iterable object if conditional expression]
ایک اظہار ایک عنصر پر لاگو ہوتا ہے جو قابل تکرار آبجیکٹ (جیسے فہرست یا ٹوپل) کے مشروط اظہار کو پورا کرتا ہے اور ایک نئی فہرست کا عنصر بن جاتا ہے۔ "اگر مشروط اظہار” کو خارج کیا جا سکتا ہے، اس صورت میں اظہار کا اطلاق تمام عناصر پر ہوتا ہے۔
مزید تفصیلات کے لیے درج ذیل مضمون کو دیکھیں، بشمول نیسٹڈ لسٹ کی سمجھ بوجھ۔
فہرست کے تمام عناصر پر عمل کا اطلاق کریں۔
مثال کے طور پر، اگر آپ کسی فہرست کے تمام عناصر پر کچھ پروسیسنگ لاگو کرنا چاہتے ہیں، تو اوپر فہرست کے فہمی اظہار میں مطلوبہ پروسیسنگ کی وضاحت کریں۔
l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]
l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']
اسے نمبروں کی فہرستوں اور تاروں کی فہرستوں کے درمیان تبدیل کرنے کے لیے استعمال کیا جا سکتا ہے۔
فہرست سے عناصر کو نکالیں اور حذف کریں جو معیار پر پورا اترتے ہیں۔
اگر عنصر کو صرف مشروط اظہار کے ذریعہ منتخب کیا جانا ہے، تو اس پر اظہار کے ذریعہ کارروائی نہیں کی جاتی ہے، لہذا یہ مندرجہ ذیل شکل اختیار کرتا ہے
[variable name for variable name in original list if conditional expression]
ایک نئی فہرست تیار کی جاتی ہے جس سے صرف وہی عناصر نکالے جاتے ہیں جو شرط کو پورا کرتے ہیں (عناصر جن کے لیے مشروط اظہار درست ہے) نکالا جاتا ہے۔
l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]
l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]
اگر "اگر مشروط اظہار” کو "اگر مشروط اظہار نہیں” پر سیٹ کیا جاتا ہے تو یہ ایک نفی بن جاتا ہے، اور صرف ایسے عناصر جو شرط کو پورا نہیں کرتے ہیں (عناصر جن کے لیے مشروط اظہار غلط ہے) کو منتخب اور نکالا جا سکتا ہے۔ دوسرے لفظوں میں، ایک نئی فہرست تیار کی جاتی ہے جس سے ایسے عناصر کو ہٹا دیا جاتا ہے جو شرط کو پورا کرتے ہیں۔
l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
بلاشبہ، ایک ہی نتیجہ نہ استعمال کیے بغیر مساوی مشروط اظہار کی وضاحت کرکے حاصل کیا جاتا ہے۔
l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
مشروط اظہار کا حصہ متعدد شرائط ہو سکتا ہے۔ منفی نوٹ بھی استعمال کیے جا سکتے ہیں۔
l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]
l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]
فہرست کی شرائط کو پورا کرنے والے عناصر کو تبدیل یا تبدیل کریں۔
مندرجہ بالا عنصر نکالنے کی مثال میں، ایسے عناصر کو ہٹا دیا گیا جو شرائط کو پورا نہیں کرتے تھے۔
اگر آپ متبادلات، تبادلوں وغیرہ کو صرف ان عناصر پر انجام دینا چاہتے ہیں جو شرائط کو پورا کرتے ہیں، تو ٹرنری آپریٹر کو فہرست فہمی اشارے کے اظہار والے حصے پر لاگو کریں۔
Python میں، ٹرنری آپریٹر کو اس طرح لکھا جا سکتا ہے۔
True Value if Conditional Expression else False Value
a = 80
x = 100 if a > 50 else 0
print(x)
# 100
b = 30
y = 100 if b > 50 else 0
print(y)
# 0
یہ قدرے پیچیدہ ہے، لیکن فہرست فہمی اشارے اور ٹرنری آپریٹرز کا مجموعہ حسب ذیل ہے۔
[True Value if Conditional Expression else False Value for any variable name in original list]
قوسین میں بند حصہ ٹرنری آپریٹر ہے (اصل کوڈ میں قوسین ضروری نہیں ہیں)۔
[(True Value if Conditional Expression else False Value) for any variable name in original list]
اگر کوئی متغیر نام صحیح یا غلط اقدار کے لیے لکھا جاتا ہے تو، اصل عنصر کی قدر اسی طرح استعمال ہوتی ہے۔ اگر کوئی اظہار لکھا جاتا ہے، تو اس اظہار کی پروسیسنگ لاگو ہوتی ہے۔
l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]
l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]
l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]
l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]


