Open In App

Lambda expression in Python to rearrange positive and negative numbers

Improve
Improve
Like Article
Like
Save
Share
Report

Given an array of positive and negative numbers, arrange them such that all negative integers appear before all the positive integers in the array. The order of appearance should be maintained. 

Examples:

Input :  arr[] = [12, 11, -13, -5, 6, -7, 5, -3, -6]
Output : arr[] = [-13, -5, -7, -3, -6, 12, 11, 6, 5]\
Input :  arr[] = [-12, 11, 0, -5, 6, -7, 5, -3, -6]
Output : arr[] =  [-12, -5, -7, -3, -6, 11, 0, 6, 5]

This problem has many solutions please refer Rearrange positive and negative numbers link, but we will solve this problem with single line of code in python using Lambda Expression

Implementation:

Approach:

  1. Define a function named “Rearrange” that takes an array “arr” as an argument.
  2. Use list comprehension to create two separate lists – one containing all negative elements in “arr” and another containing all non-negative (positive and zero) elements in “arr”.
  3. Concatenate the two lists in the order of negative elements first, followed by non-negative elements.
  4. Return the concatenated list.
  5. In the main section, create an array “arr” with some positive and negative numbers.
  6. Call the “Rearrange” function with “arr” as an argument.
  7. Print the returned list.

Python3




<div id="highlighter_261585" class="syntaxhighlighter nogutter  "><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="comments"># Function to rearrange positive and negative elements</code></div><div class="line number2 index1 alt1"><code class="keyword">def</code> <code class="plain">Rearrange(arr):</code></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><code class="undefined spaces">    </code><code class="comments"># First lambda expression returns list of negative numbers</code></div><div class="line number5 index4 alt2"><code class="undefined spaces">    </code><code class="comments"># in arr.</code></div><div class="line number6 index5 alt1"><code class="undefined spaces">    </code><code class="comments"># Second lambda expression returns list of positive numbers</code></div><div class="line number7 index6 alt2"><code class="undefined spaces">    </code><code class="comments"># in arr.</code></div><div class="line number8 index7 alt1"><code class="undefined spaces">    </code><code class="keyword">return</code> <code class="plain">[x </code><code class="keyword">for</code> <code class="plain">x </code><code class="keyword">in</code> <code class="plain">arr </code><code class="keyword">if</code> <code class="plain">x < </code><code class="value">0</code><code class="plain">] </code><code class="keyword">+</code> <code class="plain">[x </code><code class="keyword">for</code> <code class="plain">x </code><code class="keyword">in</code> <code class="plain">arr </code><code class="keyword">if</code> <code class="plain">x ></code><code class="keyword">=</code> <code class="value">0</code><code class="plain">]</code></div><div class="line number9 index8 alt2"> </div><div class="line number10 index9 alt1"><code class="comments"># Driver function</code></div><div class="line number11 index10 alt2"><code class="keyword">if</code> <code class="plain">__name__ </code><code class="keyword">=</code><code class="keyword">=</code> <code class="string">"__main__"</code><code class="plain">:</code></div><div class="line number12 index11 alt1"><code class="undefined spaces">    </code><code class="plain">arr </code><code class="keyword">=</code> <code class="plain">[</code><code class="value">12</code><code class="plain">, </code><code class="value">11</code><code class="plain">, </code><code class="keyword">-</code><code class="value">13</code><code class="plain">, </code><code class="keyword">-</code><code class="value">5</code><code class="plain">, </code><code class="value">6</code><code class="plain">, </code><code class="keyword">-</code><code class="value">7</code><code class="plain">, </code><code class="value">5</code><code class="plain">, </code><code class="keyword">-</code><code class="value">3</code><code class="plain">, </code><code class="keyword">-</code><code class="value">6</code><code class="plain">]</code></div><div class="line number13 index12 alt2"><code class="undefined spaces">    </code><code class="functions">print</code> <code class="plain">(Rearrange(arr))</code></div></div></td></tr></tbody></table></div>


Output

[-13, -5, -7, -3, -6, 12, 11, 6, 5]

Time Complexity: O(n)
We iterate over the list of elements once, so the time complexity is linear.

Space Complexity: O(n)
We create two temporary lists, so the space complexity is also linear.


Last Updated : 27 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads