Open In App

Python | Alternate Sort in String list

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Sometimes, while working with Python list, we can have a problem in which we need to perform sorting only of alternatively in list. This kind of application can come many times. Let’s discuss certain way in which this task can be performed.
 Method : Using join() + enumerate() + generator expression + sorted() This task can be achieved by using combination of functionalities above. In this, we perform the sort using just %2 elements in String list. The extension of this operation to entire list is performed by generator expression. 

Python3




# Python3 code to demonstrate working of
# Alternate Sort String list
# using join() + enumerate() + generator expression + sorted()
 
# initialize list
test_list = ['cdab', 'gfeh', 'kjil']
 
# printing original list
print("The original list : " + str(test_list))
 
# Alternate Sort String list
# using join() + enumerate() + generator expression + sorted()
res = ["".join(sorted(j, reverse = i % 2)) for i, j in enumerate(test_list)]
 
# printing result
print("The String list after alternate sorting : " + str(res))


Output : 

The original list : ['cdab', 'gfeh', 'kjil']
The String list after alternate sorting : ['abcd', 'hgfe', 'ijkl']

Time Complexity: O(n*nlogn), where n is the length of the input list. This is because we’re using min() + generator expression which has a time complexity of O(n*nlogn) in the worst case.
Auxiliary Space: O(n), as we’re using additional space res other than the input list itself with the same size of input list.

Method #2: Using For loop +enumerate()+sorted()+join().

Python3




# Python3 code to demonstrate working of
# Alternate Sort String list
# using for loop + enumerate()
 
# initialize list
test_list = ['cdab', 'gfeh', 'kjil']
 
# printing original list
print("The original list : " + str(test_list))
 
result = []
for i, word in enumerate(test_list):
    if i % 2 == 0:
        result.append(''.join(sorted(word)))
    else:
        result.append(''.join(sorted(word, reverse=True)))
 
# printing result
print("The String list after alternate sorting : " + str(result))
 
#this code contributed by tvsk


Output

The original list : ['cdab', 'gfeh', 'kjil']
The String list after alternate sorting : ['abcd', 'hgfe', 'ijkl']

Time Complexity: O(m * nlogn), where m is length of test_list and n is sorting the sub strings of test_list
Auxiliary Space: O(n)



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