我有一張桌子,上面有在其他地方收集的相對豐富的字串。我還有一個與字串相關的功能串列。探索每個特征的每個字串并總結相對豐度的最佳方法是什么。
示例輸入表:
──────────── ────────────
| String | Abundance |
──────────── ────────────
| abcdef | 12 |
| cdefgh | 15 |
| fghijk | 36 |
| jklmnoabc | 37 |
──────────── ────────────
示例字串特征:
cdef, abc, jk
示例輸出
────────── ────────────────
| Feature | Abundance (%) |
────────── ────────────────
| cdef | 27 |
| abc | 59 |
| jk | 73 |
────────── ────────────────
任何幫助將不勝感激!
uj5u.com熱心網友回復:
答案是查看您擁有的每個字串的字串功能串列并使用inPython 的運算子。這將檢查您的功能是否出現在您應用它的字串中。然后,您想要積累豐度并將其與您的功能相關聯。
uj5u.com熱心網友回復:
您可以使用以下代碼:
a = [['abcdef', 12], ['cdefgh', 15], ['fghijk', 36], ['jklmnoabc', 37]]
s = ['cdef', 'abc', 'jk']
def func(a, s):
ans = []
for i in s:
ans.append(0)
for j in a:
if i in j[0]: # string j[0] contains string i
ans[len(ans) - 1] = j[1]
return ans
print(func(a, s))
uj5u.com熱心網友回復:
您是否嘗試使用正則運算式進行回圈?因為,您必須瀏覽您的兩個串列(輸入和功能)。我不認為有一個特定的演算法可以高度加速這個程序。
這是我在想的
import re
for feature in features:
p = re.compile(f"{feature.string}")
feature.abundance = 0
for input in inputs:
m = p.match(input.string)
if m: # if not None
feature.abundance = input.abundance
這樣,您的features清單中就會包含所有內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/510275.html
上一篇:獲取R中許多檔案夾中的檔案名
下一篇:Python字串切片
