Skip to content
    geeksforgeeks
    • Interview Prep
      • DSA
      • Interview Corner
      • Aptitude & Reasoning
      • Practice Coding Problems
      • All Courses
    • Tutorials
      • Python
      • Java
      • ML & Data Science
      • Programming Languages
      • Web Development
      • CS Subjects
      • DevOps
      • Software and Tools
      • School Learning
    • Tracks
      • Languages
        • Python
        • C
        • C++
        • Java
        • Advanced Java
        • SQL
        • JavaScript
        • C#
      • Interview Preparation
        • GfG 160
        • GfG 360
        • System Design
        • Core Subjects
        • Interview Questions
        • Interview Puzzles
        • Aptitude and Reasoning
        • Product Management
        • Computer Organisation and Architecture
      • Data Science
        • Python
        • Data Analytics
        • Complete Data Science
        • Gen AI
        • Agentic AI
      • Dev Skills
        • Full-Stack Web Dev
        • DevOps
        • Software Testing
        • CyberSecurity
        • NextJS
        • Git
      • Tools
        • Computer Fundamentals
        • AI Tools
        • MS Excel & Google Sheets
        • MS Word & Google Docs
      • Maths
        • Maths For Computer Science
        • Engineering Mathematics
        • School Maths
    • Python Tutorial
    • Data Types
    • Interview Questions
    • Examples
    • Quizzes
    • DSA Python
    • Data Science
    • NumPy
    • Pandas
    • Practice
    • Django
    • Flask
    • Projects
    Open In App

    Python - Rows with K string in Matrix

    Last Updated : 14 May, 2023
    Comments
    Improve
    Suggest changes
    Like Article
    Like
    Report
    See More

    Given a matrix, extract row numbers with particular string occurrences.

    Input : test_list = [["GFG", "best", "geeks"], ["geeks", "rock"], ["GFG", "for", "CS"], ["Keep", "learning"]], K = "GFG" 
    Output : [0, 2] 
    Explanation : 0th index and 2nd index have "GFG" in them as element.


    Input : test_list = [["GFG", "best", "geeks"], ["geeks", "rock", "GFG"], ["GFG", "for", "CS"], ["Keep", "learning"]], K = "GFG" 
    Output : [0, 1, 2] 
    Explanation : 0th index, 1st index and 2nd index have "GFG" in them as element. 

    Method #1: Using loop

    In this, we iterate for each element in Matrix and get the indices of all the rows which match the K string.

    Python3
    # Python3 code to demonstrate working of
    # Rows with K string in Matrix
    # Using loop
    
    # initializing list
    test_list = [["GFG", "best", "geeks"], ["geeks", "rock"],
                 ["GFG", "for", "CS"], ["Keep", "learning"]]
    
    # printing original list
    print("The original list is : ", test_list)
    
    # initializing K
    K = "GFG"
    
    res = []
    
    # enumerate() used for getting both index and ele
    for idx, ele in enumerate(test_list):
    
        # checking for K String
        if K in ele:
            res.append(idx)
    
    # printing result
    print("Rows with K : " + str(res))
    

    Output:

    The original list is :  [['GFG', 'best', 'geeks'], ['geeks', 'rock'], ['GFG', 'for', 'CS'], ['Keep', 'learning']] Rows with K : [0, 2]

    Time Complexity: O(n) where n is the number of elements in the list “test_list”. 
    Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the list “test_list”. 

    Method #2 : Using list comprehension

    This is similar to above method, difference being its a shorthand to solve problem.

    Python3
    # Python3 code to demonstrate working of
    # Rows with K string in Matrix
    # Using list comprehension
    
    # initializing list
    test_list = [["GFG", "best", "geeks"], ["geeks", "rock"],
                 ["GFG", "for", "CS"], ["Keep", "learning"]]
    
    # printing original list
    print("The original list is : ", test_list)
    
    # initializing K
    K = "GFG"
    
    # shorthand to get result
    res = [idx for idx, ele in enumerate(test_list) if K in ele]
    
    # printing result
    print("Rows with K : " + str(res))
    

    Output:

    The original list is :  [['GFG', 'best', 'geeks'], ['geeks', 'rock'], ['GFG', 'for', 'CS'], ['Keep', 'learning']] Rows with K : [0, 2]

    The Time and Space Complexity for all the methods are the same:

    Time Complexity: O(n)

    Space Complexity: O(n)

    Method #3 : Using filter()

    Here's another approach using the filter() function in Python:

    Algorithm for implementing Python - Rows with K string in Matrix approach:

    Initialize the matrix with the given input values.
    Initialize the string K with the given input value.
    Use the filter function to filter out the rows in the matrix which contains the string K.
    The filter function takes a lambda function which returns True if K is present in the current row being checked.
    Use the range function to generate the indices of the rows in the matrix.
    Convert the filtered result to a list and store it in a variable res.
    Print the list of rows that contain the string K.

    Python3
    # Python code to find the rows with the K string in a matrix
    
    # Initializing the matrix
    test_list = [["GFG", "best", "geeks"], ["geeks", "rock"],
                 ["GFG", "for", "CS"], ["Keep", "learning"]]
    
    # Printing the original list
    print("The original list is : ", test_list)
    
    # Initializing K
    K = "GFG"
    
    # Using the filter function to get the indices of rows with K string
    res = list(filter(lambda i: K in test_list[i], range(len(test_list))))
    
    # Printing the result
    print("Rows with K : " + str(res))
    

    Output
    The original list is :  [['GFG', 'best', 'geeks'], ['geeks', 'rock'], ['GFG', 'for', 'CS'], ['Keep', 'learning']]
    Rows with K : [0, 2]

    Time complexity: The time complexity of the given algorithm is O(nm), where n is the number of rows in the matrix and m is the maximum number of strings in any row. This is because we need to iterate over all the rows and check each row for the presence of the string K. The time complexity of the filter function is O(n), where n is the number of rows in the matrix.

    space complexity: The space complexity of the given algorithm is O(n). This is because we are storing the result.

    Method #4: Using numpy library

    STEPS : 

    Import the numpy library.
    Initialize the matrix and K string as given in the problem.
    Convert the matrix to a numpy array.
    Use the np.where() function to find the indices of rows containing the K string.
    Print the result.

    Python3
    import numpy as np
    
    # Initializing the matrix and K string
    test_list = [["GFG", "best", "geeks"], ["geeks", "rock"],
                 ["GFG", "for", "CS"], ["Keep", "learning"]]
    K = "GFG"
    
    # Padding the rows with empty strings
    max_len = max(len(row) for row in test_list)
    padded_list = [row + ['']*(max_len-len(row)) for row in test_list]
    
    # Converting matrix to numpy array
    arr = np.array(padded_list)
    
    # Using np.char.count() to find rows containing K string
    res = np.where(np.char.count(arr, K) > 0)[0]
    
    # Printing the result
    print("Rows with K : " + str(res))
    
    OUTPUT : 
    Rows with K : [0 2]

    Time complexity: O(n*m) where n is the number of rows and m is the maximum number of columns in a row.

    Auxiliary space: O(n*m) where n is the number of rows and m is the maximum number of columns in a row, due to the creation of the numpy array.

    Method #5: Using list indexing and iteration

    Initialize an empty list to store the indices of the rows with the K string.
    Iterate over each row of the matrix using a for loop and index variable i.
    Check if K is present in the current row using the "in" keyword.
    If K is present in the current row, append the index i to the list of indices.
    Return the list of indices.

    Python3
    # Initializing the matrix
    test_list = [["GFG", "best", "geeks"], ["geeks", "rock"],
                 ["GFG", "for", "CS"], ["Keep", "learning"]]
    
    # Printing the original list
    print("The original list is : ", test_list)
    
    # Initializing K
    K = "GFG"
    
    # Using list indexing and iteration to get the indices of rows with K string
    res = []
    for i in range(len(test_list)):
        if K in test_list[i]:
            res.append(i)
    
    # Printing the result
    print("Rows with K : " + str(res))
    

    Output
    The original list is :  [['GFG', 'best', 'geeks'], ['geeks', 'rock'], ['GFG', 'for', 'CS'], ['Keep', 'learning']]
    Rows with K : [0, 2]

    Time complexity: O(n*m), where n is the number of rows and m is the average number of elements in each row.
    Auxiliary space: O(k), where k is the number of rows with K string.

    Create Quiz

    M

    manjeet_04
    Improve

    M

    manjeet_04
    Improve
    Article Tags :
    • Python
    • Python Programs
    • Python list-programs
    • Python string-programs

    Explore

      Python Fundamentals

      Python Introduction

      2 min read

      Input and Output in Python

      4 min read

      Python Variables

      4 min read

      Python Operators

      4 min read

      Python Keywords

      2 min read

      Python Data Types

      8 min read

      Conditional Statements in Python

      3 min read

      Loops in Python - For, While and Nested Loops

      5 min read

      Python Functions

      5 min read

      Recursion in Python

      4 min read

      Python Lambda Functions

      5 min read

      Python Data Structures

      Python String

      5 min read

      Python Lists

      4 min read

      Python Tuples

      4 min read

      Python Dictionary

      3 min read

      Python Sets

      6 min read

      Python Arrays

      7 min read

      List Comprehension in Python

      4 min read

      Advanced Python

      Python OOP Concepts

      11 min read

      Python Exception Handling

      5 min read

      File Handling in Python

      4 min read

      Python Database Tutorial

      4 min read

      Python MongoDB Tutorial

      3 min read

      Python MySQL

      9 min read

      Python Packages

      10 min read

      Python Modules

      3 min read

      Python DSA Libraries

      15 min read

      List of Python GUI Library and Packages

      3 min read

      Data Science with Python

      NumPy Tutorial - Python Library

      3 min read

      Pandas Tutorial

      4 min read

      Matplotlib Tutorial

      5 min read

      Python Seaborn Tutorial

      3 min read

      StatsModel Library - Tutorial

      3 min read

      Learning Model Building in Scikit-learn

      6 min read

      TensorFlow Tutorial

      2 min read

      PyTorch Tutorial

      6 min read

      Web Development with Python

      Flask Tutorial

      8 min read

      Django Tutorial | Learn Django Framework

      7 min read

      Django ORM - Inserting, Updating & Deleting Data

      4 min read

      Templating With Jinja2 in Flask

      6 min read

      Django Templates

      5 min read

      Build a REST API using Flask - Python

      3 min read

      Building a Simple API with Django REST Framework

      3 min read

      Python Practice

      Python Quiz

      1 min read

      Python Coding Practice

      1 min read

      Python Interview Questions and Answers

      15+ min read
    top_of_element && top_of_screen < bottom_of_element) || (bottom_of_screen > articleRecommendedTop && top_of_screen < articleRecommendedBottom) || (top_of_screen > articleRecommendedBottom)) { if (!isfollowingApiCall) { isfollowingApiCall = true; setTimeout(function(){ if (loginData && loginData.isLoggedIn) { if (loginData.userName !== $('#followAuthor').val()) { is_following(); } else { $('.profileCard-profile-picture').css('background-color', '#E7E7E7'); } } else { $('.follow-btn').removeClass('hideIt'); } }, 3000); } } }); } $(".accordion-header").click(function() { var arrowIcon = $(this).find('.bottom-arrow-icon'); arrowIcon.toggleClass('rotate180'); }); }); window.isReportArticle = false; function report_article(){ if (!loginData || !loginData.isLoggedIn) { const loginModalButton = $('.login-modal-btn') if (loginModalButton.length) { loginModalButton.click(); } return; } if(!window.isReportArticle){ //to add loader $('.report-loader').addClass('spinner'); jQuery('#report_modal_content').load(gfgSiteUrl+'wp-content/themes/iconic-one/report-modal.php', { PRACTICE_API_URL: practiceAPIURL, PRACTICE_URL:practiceURL },function(responseTxt, statusTxt, xhr){ if(statusTxt == "error"){ alert("Error: " + xhr.status + ": " + xhr.statusText); } }); }else{ window.scrollTo({ top: 0, behavior: 'smooth' }); $("#report_modal_content").show(); } } function closeShareModal() { const shareOption = document.querySelector('[data-gfg-action="share-article"]'); shareOption.classList.remove("hover_share_menu"); let shareModal = document.querySelector(".hover__share-modal-container"); shareModal && shareModal.remove(); } function openShareModal() { closeShareModal(); // Remove existing modal if any let shareModal = document.querySelector(".three_dot_dropdown_share"); shareModal.appendChild(Object.assign(document.createElement("div"), { className: "hover__share-modal-container" })); document.querySelector(".hover__share-modal-container").append( Object.assign(document.createElement('div'), { className: "share__modal" }), ); document.querySelector(".share__modal").append(Object.assign(document.createElement('h1'), { className: "share__modal-heading" }, { textContent: "Share to" })); const socialOptions = ["LinkedIn", "WhatsApp","Twitter", "Copy Link"]; socialOptions.forEach((socialOption) => { const socialContainer = Object.assign(document.createElement('div'), { className: "social__container" }); const icon = Object.assign(document.createElement("div"), { className: `share__icon share__${socialOption.split(" ").join("")}-icon` }); const socialText = Object.assign(document.createElement("span"), { className: "share__option-text" }, { textContent: `${socialOption}` }); const shareLink = (socialOption === "Copy Link") ? Object.assign(document.createElement('div'), { role: "button", className: "link-container CopyLink" }) : Object.assign(document.createElement('a'), { className: "link-container" }); if (socialOption === "LinkedIn") { shareLink.setAttribute('href', `https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}`); shareLink.setAttribute('target', '_blank'); } if (socialOption === "WhatsApp") { shareLink.setAttribute('href', `https://api.whatsapp.com/send?text=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } if (socialOption === "Twitter") { shareLink.setAttribute('href', `https://twitter.com/intent/tweet?url=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } shareLink.append(icon, socialText); socialContainer.append(shareLink); document.querySelector(".share__modal").appendChild(socialContainer); //adding copy url functionality if(socialOption === "Copy Link") { shareLink.addEventListener("click", function() { var tempInput = document.createElement("input"); tempInput.value = window.location.href; document.body.appendChild(tempInput); tempInput.select(); tempInput.setSelectionRange(0, 99999); // For mobile devices document.execCommand('copy'); document.body.removeChild(tempInput); this.querySelector(".share__option-text").textContent = "Copied" }) } }); // document.querySelector(".hover__share-modal-container").addEventListener("mouseover", () => document.querySelector('[data-gfg-action="share-article"]').classList.add("hover_share_menu")); } function toggleLikeElementVisibility(selector, show) { document.querySelector(`.${selector}`).style.display = show ? "block" : "none"; } function closeKebabMenu(){ document.getElementById("myDropdown").classList.toggle("show"); }
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Campus Training Program
  • Explore
  • POTD
  • Job-A-Thon
  • Blogs
  • Nation Skill Up
  • Tutorials
  • Programming Languages
  • DSA
  • Web Technology
  • AI, ML & Data Science
  • DevOps
  • CS Core Subjects
  • Interview Preparation
  • Software and Tools
  • Courses
  • ML and Data Science
  • DSA and Placements
  • Web Development
  • Programming Languages
  • DevOps & Cloud
  • GATE
  • Trending Technologies
  • Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
  • Preparation Corner
  • Interview Corner
  • Aptitude
  • Puzzles
  • GfG 160
  • System Design
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences