मेरे पास यह सूची है जिसमें अक्षर हैं, और मुझे यह जांचने की ज़रूरत है कि किसी अन्य सूची में स्थित पूर्व-निर्धारित शब्द क्षैतिज रूप से अक्षरों की इस सूची के अंदर है या नहीं।

अर्थात।:

mat_input = [['v', 'e', 'd', 'j', 'n', 'a', 'e', 'o'], ['i', 'p', 'y', 't', 'h', 'o', 'n', 'u'], ['s', 'u', 'e', 'w', 'e', 't', 'a', 'e']]


words_to_search = ['python', 'fox']

मुझे यह बताने की ज़रूरत नहीं है कि कोई शब्द नहीं मिला, लेकिन अगर ऐसा है तो मुझे यह बताने की ज़रूरत है कि कौन सा शब्द है।

मेरी समस्या यह है कि अब तक मैंने इस तरह के लूप में अक्षर से पत्र की तुलना करने की कोशिश की है:

for i in range(n):                         # n = number of words
  for j in range(len(word_to_search[i])):  # size of the word I'm searching
    for k in range(h):                     # h = height of crossword
      for m in range(l):                   # l = lenght of crossword

लेकिन यह काम नहीं कर रहा है, आखिरी लूप के अंदर मैंने यह बताने के लिए कई कोशिश की कि क्या पूरा शब्द मिला या नहीं। इसे कैसे हल किया जा सकता है?

1
Igor Braga 16 मई 2018, 20:42

2 जवाब

सबसे बढ़िया उत्तर

आप str.join का उपयोग कर सकते हैं:

mat_input = [['v', 'e', 'd', 'j', 'n', 'a', 'e', 'o'], ['i', 'p', 'y', 't', 'h', 'o', 'n', 'u'], ['s', 'u', 'e', 'w', 'e', 't', 'a', 'e']]
words_to_search = ['python', 'fox']
joined_input = list(map(''.join, mat_input))
results = {i:any(i in b or i in b[::-1] for b in joined_input) for i in words_to_search}

आउटपुट:

{'python': True, 'fox': False}
4
Ajax1234 16 मई 2018, 21:16

मैं प्रत्येक उपन्यास को mat_input में एक स्ट्रिंग में शामिल करके शुरू करूंगा:

mat_input_joined = [''.join(x) for x in mat_input]

फिर खोजने के लिए अपने शब्दों पर लूप करें और बस in ऑपरेटर का उपयोग करके देखें कि क्या शब्द प्रत्येक स्ट्रिंग में निहित है:

for word_to_search in words_to_search:
    result = [word_to_search in x for x in mat_input_joined]
    print('Word:',word_to_search,'found in indices:',[i for i, x in enumerate(result) if x])

नतीजा:

Word: python found in indices: [1]
Word: fox found in indices: []
0
akshat 16 मई 2018, 20:55