ਪਾਈਥਨ ਸੂਚੀਆਂ (ਐਰੇ) ਦੇ ਖਾਸ ਤੱਤਾਂ ਨੂੰ ਐਕਸਟਰੈਕਟ, ਬਦਲੋ ਅਤੇ ਬਦਲੋ

ਕਾਰੋਬਾਰ

ਪਾਈਥਨ ਵਿੱਚ ਇੱਕ ਮੌਜੂਦਾ ਸੂਚੀ (ਐਰੇ) ਦੇ ਸਿਰਫ਼ ਉਹਨਾਂ ਤੱਤਾਂ ਨੂੰ ਕੱਢ ਕੇ ਜਾਂ ਮਿਟਾਉਣ ਦੁਆਰਾ ਇੱਕ ਨਵੀਂ ਸੂਚੀ ਬਣਾਉਣ ਲਈ, ਜੋ ਕਿ ਕੁਝ ਸ਼ਰਤਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦੇ ਹਨ, ਜਾਂ ਤਬਦੀਲੀਆਂ ਜਾਂ ਪਰਿਵਰਤਨ ਕਰਨ ਦੁਆਰਾ, ਸੂਚੀ ਸਮਝ ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਇੱਥੇ ਨਮੂਨਾ ਕੋਡ ਦੇ ਨਾਲ ਹੇਠਾਂ ਵਿਆਖਿਆ ਕੀਤੀ ਗਈ ਹੈ।

  • ਸੂਚੀ ਸਮਝ ਸੰਕੇਤ ਦਾ ਮੂਲ ਰੂਪ
  • ਸੂਚੀ ਦੇ ਸਾਰੇ ਤੱਤਾਂ ‘ਤੇ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਲਾਗੂ ਕਰੋ
  • ਸੂਚੀ ਵਿੱਚੋਂ ਤੱਤ ਕੱਢੋ ਅਤੇ ਮਿਟਾਓ ਜੋ ਮਾਪਦੰਡਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦੇ ਹਨ
  • ਸੂਚੀ ਦੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਵਾਲੇ ਤੱਤਾਂ ਨੂੰ ਬਦਲੋ ਜਾਂ ਬਦਲੋ

ਸਤਰ ਦੀਆਂ ਸੂਚੀਆਂ ਦੀਆਂ ਖਾਸ ਉਦਾਹਰਣਾਂ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਲੇਖ ਦੇਖੋ।

ਇਹ ਬੇਤਰਤੀਬੇ ਤੱਤਾਂ ਨੂੰ ਕੱਢਣਾ ਵੀ ਸੰਭਵ ਹੈ ਜੋ ਮਾਪਦੰਡਾਂ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰਦੇ.

ਨੋਟ ਕਰੋ ਕਿ ਸੂਚੀਆਂ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦੇ ਡੇਟਾ ਨੂੰ ਸਟੋਰ ਕਰ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਐਰੇ ਤੋਂ ਬਿਲਕੁਲ ਵੱਖਰੀਆਂ ਹਨ। ਜੇ ਤੁਸੀਂ ਉਹਨਾਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਵਿੱਚ ਐਰੇ ਨੂੰ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ ਜਿਹਨਾਂ ਲਈ ਮੈਮੋਰੀ ਆਕਾਰ ਅਤੇ ਮੈਮੋਰੀ ਪਤੇ ਜਾਂ ਵੱਡੇ ਡੇਟਾ ਦੀ ਸੰਖਿਆਤਮਕ ਪ੍ਰਕਿਰਿਆ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਐਰੇ (ਸਟੈਂਡਰਡ ਲਾਇਬ੍ਰੇਰੀ) ਜਾਂ 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]

ਸੂਚੀ ਦੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਵਾਲੇ ਤੱਤਾਂ ਨੂੰ ਬਦਲੋ ਜਾਂ ਬਦਲੋ

ਉਪਰੋਕਤ ਤੱਤ ਕੱਢਣ ਦੀ ਉਦਾਹਰਨ ਵਿੱਚ, ਉਹ ਤੱਤ ਜੋ ਸ਼ਰਤਾਂ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰਦੇ ਸਨ ਹਟਾ ਦਿੱਤੇ ਗਏ ਸਨ।

ਜੇਕਰ ਤੁਸੀਂ ਸਿਰਫ਼ ਉਹਨਾਂ ਤੱਤਾਂ ‘ਤੇ ਬਦਲ, ਪਰਿਵਰਤਨ, ਆਦਿ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਜੋ ਸ਼ਰਤਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦੇ ਹਨ, ਤਾਂ ਸੂਚੀ ਸਮਝ ਦੇ ਸੰਕੇਤ ਦੇ ਸਮੀਕਰਨ ਵਾਲੇ ਹਿੱਸੇ ‘ਤੇ ਟਰਨਰੀ ਓਪਰੇਟਰ ਨੂੰ ਲਾਗੂ ਕਰੋ।

ਪਾਈਥਨ ਵਿੱਚ, ਟਰਨਰੀ ਓਪਰੇਟਰ ਨੂੰ ਹੇਠ ਲਿਖੇ ਅਨੁਸਾਰ ਲਿਖਿਆ ਜਾ ਸਕਦਾ ਹੈ

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