對于我正在處理的這個專案,我有一個長度相等的字串串列(因此長度可能會有所不同),并且我只想要可以在我指定的字串中找到其子字串的字串。
將進一步闡述,但以下是預期的結果。
# list of strings
["aa", "ct", "ab", "ac", "bd", "ra", "db", "pq", "cb"]
# a subset of this list is not included in a new list because they do not contain a/b/c/d
# -> this list of strings
["aa", "ab", "ac", "bd", "db", "cb"]
# in other words, "ct", "ra", "pq" are excluded
但是,當我列印如下所示的有效字串的新串列時,除了“pq”之外的每個字串都包括在內。它似乎產生了與使用 any() 函式相似的結果,如果它只做我想要的,那就太好了。
list_of_strings = ["aa", "ct", "ab", "ac", "bd", "ra", "db", "pq", "cb"]
def isValidString(seq):
for substring in seq:
if substring in "abcd":
return True
valid_strings = []
for sequence in list_of_strings:
if isValidString(sequence):
valid_strings.append(sequence)
print(valid_strings)
# Output : ['aa', 'ct', 'ab', 'ac', 'bd', 'ra', 'db', 'cb']
uj5u.com熱心網友回復:
一切看起來都很好,但我們只需要在找到要排除的字符時停止檢查。否則,我們必須繼續檢查順序。
list_of_strings = ["aa", "ct", "ab", "ac", "bd", "ra", "db", "pq", "cb"]
def isValidString(seq):
for substring in seq:
if substring not in "abcd":
return False
return True
valid_strings = []
for sequence in list_of_strings:
if isValidString(sequence):
valid_strings.append(sequence)
print("\n")
print(valid_strings)
uj5u.com熱心網友回復:
如果您詢問這種型別的輸出,那么您可以使用此代碼輸出
['aa', 'ab', 'ac', 'bd', 'db', 'cb']
代碼
list_of_strings = ["aa", "ct", "ab", "ac", "bd", "ra", "db", "pq", "cb"]
def isValidString(seq):
for substring in ["a","b","c","d"]:
for substring2 in ["a","b","c","d"]:
if substring substring2 in seq:
return True
valid_strings = []
for sequence in list_of_strings:
if isValidString(sequence):
valid_strings.append(sequence)
print(valid_strings)
uj5u.com熱心網友回復:
using yield keyword.
def string_match(list_of_strings):
for data in list_of_strings:
for char_data in data:
if char_data in "abcd":
yield data
break
for data in string_match(list_of_strings):
print(data)
uj5u.com熱心網友回復:
計算匹配數?
list_of_strings = ["aa", "ct", "ab", "ac", "bd", "ra", "db", "pq", "cb"]
def isValidString(seq):
nb_matches = 0
for substring in seq:
if substring in "abcd":
nb_matches = 1
if nb_matches == len(seq):
return True
valid_strings = []
for sequence in list_of_strings:
if isValidString(sequence):
valid_strings.append(sequence)
print(valid_strings)
uj5u.com熱心網友回復:
data = ["aa", "ct", "ab", "ac", "bd", "ra", "db", "pq", "cb"]
searchstring = ["aa", "ab", "ac", "bd", "db", "cb"]
newdata = [s for s in data if s in searchstring]
print(newdata)
回傳
['aa', 'ab', 'ac', 'bd', 'db', 'cb']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528639.html
