Open In App

Python – Extract element from list succeeded by K

Improve
Improve
Like Article
Like
Save
Share
Report

Given a list, extract the elements which are having K as the next element.

Input : test_list = [2, 3, 5, 7, 8, 5, 3, 5], K = 3 
Output : [2, 5] 
Explanation : Elements before 3 are 2, 5.

Input : test_list = [2, 3, 5, 7, 8, 5, 3, 8], K = 8 
Output : [7, 3] 
Explanation : Elements before 8 are 7, 3. 

Method #1: Using loop

In this, we iterate the list and look for each K, and extract the element preceding it.

Python3




# Python3 code to demonstrate working of
# Extract elements succeeded by K
# Using loop
 
# initializing list
test_list = [2, 3, 5, 7, 8, 5, 3, 5]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 5
 
# Using loop to extract elements succeeded by K
res = []
for idx in range(len(test_list) - 1):
 
    # checking for succession
    if test_list[idx + 1] == K:
        res.append(test_list[idx])
 
# printing result
print("Extracted elements list : " + str(res))


Output

The original list is : [2, 3, 5, 7, 8, 5, 3, 5]
Extracted elements list : [3, 8, 3]

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #2: Using list comprehension

Another way to solve this question, in this, we use list comprehension as shorthand to solve the problem of getting elements.

Python3




# Python3 code to demonstrate working of
# Extract elements succeeded by K
# Using list comprehension
 
# initializing list
test_list = [2, 3, 5, 7, 8, 5, 3, 5]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 5
 
# List comprehension used as shorthand
res = [test_list[idx]
       for idx in range(len(test_list) - 1) if test_list[idx + 1] == K]
 
# printing result
print("Extracted elements list : " + str(res))


Output

The original list is : [2, 3, 5, 7, 8, 5, 3, 5]
Extracted elements list : [3, 8, 3]

Time Complexity: O(n) where n is the number of elements in the list “test_list”.  list comprehension performs n number of operations.
Auxiliary Space: O(n), extra space is required where n is the number of elements in the list

Method 3: Using the enumerate() function.

Step-by-step approach:

  • Initialize the original list and K value.
  • Create an empty list to store the extracted elements.
  • Loop through the list using the enumerate() function to access both the index and value of each element in the list.
  • Check if the current element is not the last element of the list and if the next element is equal to K.
  • If the condition is true, append the current element to the extracted elements list.
  • After the loop, print the extracted elements list.

Python3




# Python3 code to demonstrate working of
# Extract elements succeeded by K
# Using enumerate()
 
# initializing list
test_list = [2, 3, 5, 7, 8, 5, 3, 5]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 5
 
# create an empty list to store extracted elements
res = []
 
# loop through the list using enumerate()
for idx, val in enumerate(test_list):
    # check if the current element is not the last element of the list and if the next element is equal to K
    if idx < len(test_list) - 1 and test_list[idx + 1] == K:
        # append the current element to the extracted elements list
        res.append(val)
 
# printing result
print("Extracted elements list : " + str(res))


Output

The original list is : [2, 3, 5, 7, 8, 5, 3, 5]
Extracted elements list : [3, 8, 3]

Time complexity: O(n) as it involves looping through the list once.
Auxiliary space: O(k), where k is the number of elements succeeded by K in the given list.

Method #4: Using slicing and zip function

Step-by-step approach:

  • Start by initializing the test_list and K as given in the problem statement.
  • Create a new list called “res” to store extracted elements.
  • Use slicing to create a new list called “next_list” that contains all elements in the original list except the first element.
  • Use the zip function to create a tuple of each pair of elements in the original list and “next_list”.
  • Loop through each tuple and check if the second element in the tuple is equal to K.
  • If it is, append the first element of the tuple to the “res” list.
  • Finally, print the “res” list to display the extracted elements.

Python3




# initializing list
test_list = [2, 3, 5, 7, 8, 5, 3, 5]
 
# initializing K
K = 5
 
# create an empty list to store extracted elements
res = []
 
# use slicing to create a new list containing all elements except the first element
next_list = test_list[1:]
 
# use the zip function to create a tuple of each pair of elements in the original list and next_list
for x, y in zip(test_list, next_list):
    # check if the second element in the tuple is equal to K
    if y == K:
        # append the first element in the tuple to the extracted elements list
        res.append(x)
 
# print result
print("Extracted elements list : " + str(res))


Output

Extracted elements list : [3, 8, 3]

Time complexity: O(n), where n is the length of the list.
Auxiliary space: O(1), since we only use a few variables to store information about the list.



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