Computer >> Máy Tính >  >> Lập trình >> Python

Python - Kiểm tra xem các từ đã cho có xuất hiện cùng nhau trong danh sách câu hay không

Giả sử chúng ta có một danh sách chứa các câu nhỏ làm thành phần của nó. Chúng tôi có một danh sách khác chứa một số từ được sử dụng trong các câu này của danh sách đầu tiên. Chúng tôi muốn tìm hiểu xem hai từ trong danh sách thứ hai có cùng xuất hiện trong một số câu của danh sách đầu tiên hay không.

Với vòng lặp append và for

Chúng tôi sử dụng vòng lặp for với in condition để kiểm tra sự hiện diện của các từ trong danh sách các câu. Sau đó, chúng tôi sử dụng hàm len để kiểm tra xem chúng tôi đã đến cuối danh sách chưa.

Ví dụ

list_sen = ['Eggs on Sunday', 'Fruits on Monday', 'Eggs and Fruits on Wednesday']
list_wrd = ['Eggs', 'Fruits']

print("Given list of sentences: \n",list_sen)
print("Given list of words: \n",list_wrd)

res = []
for x in list_sen:
   k = [w for w in list_wrd if w in x]
   if (len(k) == len(list_wrd)):
      res.append(x)
print(res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list of sentences:
['Eggs on Sunday', 'Fruits on Monday', 'Eggs and Fruits on Wednesday']
Given list of words:
['Eggs', 'Fruits']
['Eggs and Fruits on Wednesday']

Với tất cả

Ở đây chúng tôi thiết kế một vòng lặp for để kiểm tra xem các từ có trong danh sách chứa câu hay không và sau đó áp dụng hàm all để xác minh thực sự tất cả các từ có trong câu hay không.

Ví dụ

list_sen = ['Eggs on Sunday', 'Fruits on Monday', 'Eggs and Fruits on Wednesday']
list_wrd = ['Eggs', 'Fruits']

print("Given list of sentences: \n",list_sen)
print("Given list of words: \n",list_wrd)

res = [all([k in s for k in list_wrd]) for s in list_sen]
print("\nThe sentence containing the words:")
print([list_sen[i] for i in range(0, len(res)) if res[i]])

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

Given list of sentences:
['Eggs on Sunday', 'Fruits on Monday', 'Eggs and Fruits on Wednesday']
Given list of words:
['Eggs', 'Fruits']

The sentence containing the words:
['Eggs and Fruits on Wednesday']

Với lambda và bản đồ

Chúng ta có thể thực hiện một cách tiếp cận tương tự như trên nhưng với hàm lambda và bản đồ. Chúng tôi cũng sử dụng các chức năng tách và kiểm tra tính khả dụng của tất cả các từ đã cho trong danh sách với các câu. Hàm bản đồ được sử dụng để áp dụng lại logic này và cho từng phần tử của danh sách.

Ví dụ

list_sen = ['Eggs on Sunday', 'Fruits on Monday', 'Eggs and Fruits on Wednesday']
list_wrd = ['Eggs', 'Fruits']

print("Given list of sentences: \n",list_sen)
print("Given list of words: \n",list_wrd)

res = list(map(lambda i: all(map(lambda j:j in i.split(),
list_wrd)), list_sen))

print("\nThe sentence containing the words:")
print([list_sen[i] for i in range(0, len(res)) if res[i]])

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list of sentences:
['Eggs on Sunday', 'Fruits on Monday', 'Eggs and Fruits on Wednesday']
Given list of words:
['Eggs', 'Fruits']

The sentence containing the words:
['Eggs and Fruits on Wednesday']