有點卡在這里編碼挑戰!我正在撰寫一個函式,它接受兩個引數(字串、查詢)并列印每個查詢字串在輸入字串中出現的次數。我想我已經很接近解決這個問題了,但是我的函式目前對查詢字串之前/之后帶有空格的查詢字串不敏感。
版本 1(對包含空格的查詢字串不敏感):
strings = ['ab', ' ab', 'abc']
queries = ['ab', ' abc', ' bc']
def matchingStrings(strings, queries):
for i in range(len(queries)):]
n_matches = strings.count(queries[i])
print(n_matches)
matchingStrings(strings,queries)
電流輸出:
1
0
0
版本 2(嘗試保留引號):
def matchingStrings(strings, queries):
for i in range(len(queries)):
query_to_match = '\'%s\'' % queries[i]
n_matches = strings.count(query_to_match)
print(n_matches)
matchingStrings(strings,queries)
電流輸出:
0
0
0
預期輸出:
2
1
0
uj5u.com熱心網友回復:
所以這個解決方案接近正確的答案,但有一些事情正在發生。首先,要將所有查詢與所有字串進行比較,我們需要兩個 for 回圈。這是幫助可視化正在發生的事情的偽代碼:
- 對于查詢中的每個查詢:開始計數以計算字串中有多少單詞與當前查詢匹配。將為每個查詢重置。
- 對于我們想要與當前查詢比較的每個單詞:我們不關心空格,因此我們將從查詢和字串中洗掉它。
- 如果剝離后單詞和查詢相同:
- 在柜臺上加一個。
- 在瀏覽完所有單詞后,列印計數,其中包含有多少單詞與當前查詢匹配。
- 繼續下一個查詢。
如果您想查看它,這里是 python。
strings = ['ab', ' ab', 'abc']
queries = ['ab', ' abc', ' bc']
def matchingStrings(strings, queries):
for query in queries:
count = 0
# need to iterate through ALL strings.
for string in strings:
if query.strip() == string.strip():
count = 1
print(count)
matchingStrings(strings, queries)
輸出:
2
1
0
uj5u.com熱心網友回復:
這將通過使用正則運算式來作業,盡管它遍歷兩個串列時速度較慢:
def matching_strings(strings, queries):
for query in queries:
count = 0
for string in strings:
if re.match(query.strip(), string):
count = 1
print(count)
在您的輸入上運行該函式將提供所需的輸出!這通過檢查查詢字串是否匹配(不帶空格.strip())來作業。
這是我的輸出:
>>> strings = ['ab', ' ab', 'abc']
>>> queries = ['ab', ' abc', ' bc']
>>> matching_strings(strings, queries)
2
1
0
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/408176.html
標籤:
