[英]How to find and remove pairs of strings with a given total letters count from a list
我有一個列表,每個元素都是一個單詞。 在這個列表中,我想找到添加字母數為 20 的單詞對,打印它們並將它們從列表中刪除。
當列表中沒有匹配條件的單詞時,程序應該停止。
這是我想出的代碼,但正如您將看到的,它有很多錯誤,索引超出范圍,我不知道如何修復它,也不知道如何讓程序在那里停止不再有符合條件的詞。
f = open('input.txt', 'r')
words = f.read().split()
c = 0
for word in words:
c += 1
for i in range(c):
letterCount = 0
for letter in words[i]:
letterCount += 1
for j in range(i+1, c):
letterCount2 = 0
for letter in words[j]:
letterCount2 += 1
if letterCount + letterCount2 == 20:
print(words[i], words[j])
words.pop(i)
words.pop(j)
這是我的建議。 您必須使用 len(list) 或 len(word) 來獲取單詞列表的長度,這將使您的生活更輕松。 在下面的代碼中,我們創建了一個 function 來檢查此類單詞對並刪除它們。 我們運行這個 function 直到沒有其他對並且循環停止:
f = open('input.txt', 'r')
words = f.read().split()
def find_pair(l):
for i in range(len(l)-1):
for k in range(i, len(l)):
if len(l[i]+l[k])==20:
return (i, k)
return (0,0)
while True:
x=find_pair(words)
if x!=(0,0):
words.pop(x[1])
words.pop(x[0])
else:
break
print(words)
使用break;
滿足條件后退出循環的語句
一個簡單的解決方案,無需更改您的單詞列表:
pairs=[]
for w1 in words:
for w2 in words:
if w1 in pairs or w2 in pairs:
continue
if w1 != w2 and len(w1) + len(w2) == 20:
print(w1, w2)
pairs.append(w1)
pairs.append(w2)
break
print(pairs)
print(list(filter(lambda x: x not in pairs, words)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.