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

Python: सूची में सभी 'y' तत्व 'x' के बाद आते हैं या नहीं जांचना

Python में जांचना कि सूची में सभी 'y' मान 'x' मान के बाद आते हैं (यानी y का पहला occurrence, x के पहले occurrence के बाद हो)।

समस्या

सूची: [11, 25, 13, 11, 64, 25, 8, 9], x=13, y=8

x=13 इंडेक्स 2 पर है, y=8 इंडेक्स 6 पर है। चूंकि 6 > 2, सभी y, x के बाद हैं।

उदाहरण

my_list = [11, 25, 13, 11, 64, 25, 8, 9]
print("मूल सूची:", my_list)

x, y = 13, 8
print(f"x = {x}, y = {y}")

# x का पहला इंडेक्स खोजें
try:
    x_index = my_list.index(x)
    print(f"x का पहला इंडेक्स: {x_index}")
except ValueError:
    print(f"x={x} सूची में नहीं मिला")
    x_index = -1

# जांचें: क्या कोई y, x से पहले है?
my_result = True
for index, element in enumerate(my_list):
    if element == y and index < x_index:
        my_result = False
        break

if my_result:
    print("सभी y तत्व x के बाद आते हैं")
else:
    print("कुछ y तत्व x से पहले हैं")

आउटपुट

मूल सूची: [11, 25, 13, 11, 64, 25, 8, 9]
x = 13, y = 8
x का पहला इंडेक्स: 2
सभी y तत्व x के बाद आते हैं

संक्षिप्त और पायथनिक तरीके

1. index() + any()

def all_y_after_x(lst, x, y):
    try:
        x_idx = lst.index(x)
        # x के पहले कोई y है?
        return not any(elem == y for elem in lst[:x_idx])
    except ValueError:
        return False  # x नहीं मिला

print(all_y_after_x([11, 25, 13, 11, 64, 25, 8, 9], 13, 8))  # True
print(all_y_after_x([8, 11, 25, 13], 13, 8))                  # False (8 इंडेक्स 0 पर)
print(all_y_after_x([11, 25, 13], 13, 8))                     # True (y नहीं है)
print(all_y_after_x([11, 25], 13, 8))                         # False (x नहीं है)

2. अगला इंडेक्स खोजकर

def all_y_after_x_v2(lst, x, y):
    try:
        x_idx = lst.index(x)
        # x के बाद पहला y खोजें
        try:
            y_idx = lst.index(y, x_idx + 1)  # x के बाद से खोजें
            return True  # y, x के बाद मिला
        except ValueError:
            return True  # y सूची में नहीं है (vacuously true)
    except ValueError:
        return False  # x नहीं मिला

3. अंतिम x और पहला y तुलना

def all_y_after_x_v3(lst, x, y):
    """अंतिम x के बाद पहला y होना चाहिए"""
    try:
        last_x = len(lst) - 1 - lst[::-1].index(x)  # अंतिम x का इंडेक्स
        first_y = lst.index(y)                       # पहला y का इंडेक्स
        return first_y > last_x
    except ValueError:
        return False  # x या y नहीं मिला

# टेस्ट
test_cases = [
    ([11, 25, 13, 11, 64, 25, 8, 9], 13, 8),   # True
    ([8, 13, 8], 13, 8),                        # False (पहला 8, 13 से पहले)
    ([13, 8, 13, 8], 13, 8),                    # False (पहला 8, अंतिम 13 से पहले)
    ([13, 13, 8, 8], 13, 8),                    # True
    ([1, 2, 3], 13, 8),                         # False (x नहीं)
    ([1, 2, 3], 1, 8),                          # True (y नहीं)
]

for lst, x, y in test_cases:
    print(f"{lst}, x={x}, y={y}: {all_y_after_x_v3(lst, x, y)}")

आउटपुट

[11, 25, 13, 11, 64, 25, 8, 9], x=13, y=8: True
[8, 13, 8], x=13, y=8: False
[13, 8, 13, 8], x=13, y=8: False
[13, 13, 8, 8], x=13, y=8: True
[1, 2, 3], x=13, y=8: False
[1, 2, 3], x=1, y=8: True

व्याख्या: "सभी y, x के बाद" का अर्थ

  • व्याख्या 1 (मूल लेख): x के पहले occurrence के बाद सभी y हों
  • व्याख्या 2 (सख्त): x के अंतिम occurrence के बाद सभी y हों
  • व्याख्या 3: पहला y, अंतिम x के बाद हो

सबसे सामान्य व्याख्या: पहला y, पहले x के बाद हो (मूल लेख का दृष्टिकोण)।

Pandas Series में उपयोग

import pandas as pd

s = pd.Series([11, 25, 13, 11, 64, 25, 8, 9])
x, y = 13, 8

try:
    x_idx = s[s == x].index[0]
    y_before_x = ((s == y) & (s.index < x_idx)).any()
    print(f"सभी y, x के बाद? {not y_before_x}")
except IndexError:
    print("x नहीं मिला")
  1. पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक लिस्ट दिए जाने पर, हमें दी गई लिस्ट का योग निकालने की आवश्यकता है। यहां हमारे पास दो दृष्टिकोण हैं: बिल्ट-इन फंक्शन का उपयोग करना और ब्रूट-फोर्स दृष्टिकोण का उपयोग

  1. - सूची के सभी सबलिस्ट प्रिंट करने के लिए पायथन प्रोग्राम

    समस्या विवरण एक सूची दी गई है, उसके सभी सबलिस्ट प्रिंट करें। उदाहरण इनपुट: list = [1, 2, 3] आउटपुट: [], [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] एल्गोरिदम एक सूची दी गई है। एक खाली सबलिस्ट लें। दिए गए सूची की लंबाई तक एक लूप चलाएं। i+1 से सूची की लंबाई तक एक और लूप चलाएं ताकि i से दाईं ओर के सभी

  1. - दो सूचियों के सभी सामान्य तत्व प्रिंट करने के लिए पायथन प्रोग्राम

    समस्या विवरण दो सूचियां दी गई हैं, दोनों सूचियों के सभी सामान्य तत्व प्रिंट करें। उदाहरण इनपुट: L1 = [5, 6, 7, 8, 9] L2 = [5, 13, 34, 22, 90] आउटपुट: {5} व्याख्या दोनों सूचियों का सामान्य तत्व 5 है। एल्गोरिदम दो यूजर इनपुट सूचियां बनाएं। सूचियों को सेट में बदलें और फिर set1 & set2 प्रिंट करें।