列表中的所有项目都应与字符串的每 50 个长子字符串进行比较。我编写的代码正在使用较小的字符串长度,但如果字符串非常大(例如:8800),则不是。任何人都可以提出更好的方法或调试代码吗?
代码:
a_str = 'CGGACTCGACAGATGTGAAGAACGACAATGTGAAGACTCGACACGACAGAGTGAAGAGAAGAGGAAACATTGTAA'
a = 0
b = 5
c = 50
leng = len(a_str)
lengb = leng - b + 1
list1 = []
list2 = []
list3 = []
list4 = []
for i in a_str[a:lengb]:
findstr = a_str[a:b]
if findstr not in list2:
count = a_str.count(findstr)
list1 = [m.start() for m in re.finditer(findstr, a_str)]
last = list1[-1]
first = list1[0]
diff = last - first
if diff > 45:
count = count - 1
if count > 3:
list2.append(findstr)
list3.append(list1)
a += 1
b += 1
a = 0
dictionary = dict(zip(list2, list3))
for j in list2:
for k in a_str[a:c]:
if c < leng:
str1 = a_str[a:c]
if str1.count(j) == 4:
list4.append(j)
a += 1
c += 1
print(list4)
对于 8800、b=10、count1=17 和 c=588 的字符串,long c 在循环期间只取值直到 1161
我需要长度为 5 的子字符串在 50 的窗口长度中重复 4 次(即;对于主字符串的每 50 个字符)