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]

ඇත්ත වශයෙන්ම, not භාවිතා නොකර සමාන කොන්දේසි සහිත ප්‍රකාශනය සඳහන් කිරීමෙන් එම ප්‍රතිඵලයම ලැබේ.

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]
Copied title and URL