Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python: मैट्रिक्स से विशिष्ट लंबाई वाली पंक्तियाँ निकालना

Python में नेस्टेड सूची (मैट्रिक्स) से उन पंक्तियों को निकालना जिनकी लंबाई दी गई मान (K) के बराबर हो।

उदाहरण

my_list = [[22, 4, 63, 7], [24, 4, 85], [95], [2, 55, 4, 7, 91], [5, 31, 1]]
print("मूल मैट्रिक्स:", my_list)

my_key = 4
print(f"लक्ष्य लंबाई K = {my_key}")

# विधि 1: List Comprehension (मूल लेख)
my_result = [sub for sub in my_list if len(sub) == my_key]
print("परिणाम:", my_result)

# विधि 2: filter() फ़ंक्शन
my_result2 = list(filter(lambda row: len(row) == my_key, my_list))
print("परिणाम (filter):", my_result2)

# विधि 3: लूप
my_result3 = []
for row in my_list:
    if len(row) == my_key:
        my_result3.append(row)
print("परिणाम (लूप):", my_result3)

आउटपुट

मूल मैट्रिक्स: [[22, 4, 63, 7], [24, 4, 85], [95], [2, 55, 4, 7, 91], [5, 31, 1]]
लक्ष्य लंबाई K = 4
परिणाम: [[22, 4, 63, 7]]

पंक्ति लंबाई विश्लेषण

# सभी पंक्तियों की लंबाई देखें
for i, row in enumerate(my_list):
    print(f"पंक्ति {i}: {row} → लंबाई = {len(row)}")

आउटपुट

पंक्ति 0: [22, 4, 63, 7] → लंबाई = 4  ← मैच
पंक्ति 1: [24, 4, 85] → लंबाई = 3
पंक्ति 2: [95] → लंबाई = 1
पंक्ति 3: [2, 55, 4, 7, 91] → लंबाई = 5
पंक्ति 4: [5, 31, 1] → लंबाई = 3

फंक्शन के रूप में

def filter_rows_by_length(matrix, k):
    """लंबाई k वाली पंक्तियाँ लौटाएं"""
    if k < 0:
        raise ValueError("K ऋणात्मक नहीं हो सकता")
    return [row for row in matrix if len(row) == k]

# उपयोग
matrix = [[1,2], [3,4,5], [6], [7,8,9,10], [11,12]]
print(filter_rows_by_length(matrix, 2))   # [[1, 2], [11, 12]]
print(filter_rows_by_length(matrix, 3))   # [[3, 4, 5]]
print(filter_rows_by_length(matrix, 4))   # [[7, 8, 9, 10]]
print(filter_rows_by_length(matrix, 1))   # [[6]]

विविधताएं

1. लंबाई की रेंज (min_len से max_len तक)

def filter_rows_by_length_range(matrix, min_len, max_len=None):
    """लंबाई रेंज में पंक्तियाँ"""
    if max_len is None:
        max_len = float('inf')
    return [row for row in matrix if min_len <= len(row) <= max_len]

print("लंबाई 2-4:", filter_rows_by_length_range(matrix, 2, 4))
# [[1, 2], [3, 4, 5], [7, 8, 9, 10], [11, 12]]

2. एकाधिक विशिष्ट लंबाईयां

def filter_rows_by_lengths(matrix, lengths):
    """निर्दिष्ट लंबाईयों वाली पंक्तियाँ"""
    length_set = set(lengths)
    return [row for row in matrix if len(row) in length_set]

print("लंबाई 2 या 4:", filter_rows_by_lengths(matrix, [2, 4]))
# [[1, 2], [7, 8, 9, 10], [11, 12]]

3. Pandas DataFrame में (समान लंबाई की पंक्तियों के लिए)

import pandas as pd
import numpy as np

# असमान लंबाई के लिए DataFrame नहीं बना सकते सीधे
# लेकिन Series of lists बना सकते हैं
s = pd.Series(my_list)
print("Series:\n", s)

# लंबाई के अनुसार फ़िल्टर
mask = s.apply(len) == my_key
filtered = s[mask]
print(f"\nलंबाई {my_key} वाली पंक्तियाँ:\n", filtered.tolist())

4. NumPy रैग्ड सरणी (object dtype)

import numpy as np

arr = np.array(my_list, dtype=object)
lengths = np.array([len(row) for row in arr])
mask = lengths == my_key
filtered = arr[mask]
print("NumPy परिणाम:", filtered.tolist())

व्यावहारिक उपयोग

  • डेटा सफाई: अपेक्षित कॉलम संख्या वाली पंक्तियाँ रखना
  • सीक्वेंस डेटा: निश्चित लंबाई के सीक्वेंस चुनना
  • बैच प्रोसेसिंग: समान आकार के बैच बनाना
  1. - पायथन में दी गई लिंक्ड लिस्ट से फोल्डेड लिस्ट खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक लिंक्ड लिस्ट है। हमें लिंक्ड लिस्ट का पहला आधा भाग लेना है और इसे दूसरे आधे भाग पर फोल्ड करना है फिर प्रतिच्छेदी नोड्स को उनके योग लेकर मर्ज करना है। अंत में, हमें परिणामी लिंक्ड लिस्ट का हेड लौटाना है।उदाहरण के लिए, यदि इनपुट [5,8,1,2,4,7,5] है, तो आउटपुट [2, 5, 15, 10] होगा।

  1. - पायथन में दिए गए अक्षरों का उपयोग करके बनाए जा सकने वाले सबसे लंबे स्ट्रिंग की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास words नामक स्ट्रिंग्स की एक सूची और letters नामक एक अन्य स्ट्रिंग है, हमें words में सबसे लंबी स्ट्रिंग की लंबाई ढूंढनी है जिसे letters के वर्णों से बनाया जा सकता है। यदि कोई शब्द नहीं बनाया जा सकता, तो 0 लौटाएं। यहां हम अक्षरों का पुनः उपयोग नहीं कर सकते। उदाहरण के लिए, यदि इनप

  1. - पायथन में दिए गए मैट्रिक्स का ट्रांसपोज़ खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक (n by n) मैट्रिक्स M है, हमें इसका ट्रांसपोज़ ढूंढना है। जैसा कि हम जानते हैं, मैट्रिक्स का ट्रांसपोज़ पंक्ति और स्तंभ इंडेक्स को स्विच करता है। अधिक औपचारिक रूप से, हर r और c के लिए, matrix[r][c] = matrix[c][r]। उदाहरण के लिए, यदि इनपुट है: 726 372 537 तो आउटपुट होगा: