繁体   English   中英

返回 6 元素或 3 元素元组列表的函数

[英]Function that returns a list of 6-element or 3-element tuples

我想编写一个函数来比较两个不同大小的list的每个3-tuple的 3 个元素。 具体来说,我想写一个函数match如下:

list1 = ['a','b', 'a', 'a', 'c', 'a', 'c', 'c', 'a']; #just an example of a list1
list2 = ['c','a', 'a', 'c', 'a', 'a']; #just an example of a list2

def match(list1, list2, storage = []):
    for i in range(0, len(list1), 3):
       for j in range(0, len(list2), 3):
       #matching rule
          if (list1[i] == list2[j+1] and list1[i] == list2[j+2]) or (list1[i] == list2[j+1] and (list1[i] == list1[i+1] or list1[i] == list1[i+2])) or (list1[i] == list1[i+2] or (list1[i] == list1[i+1]) and (list2[j] == list2[j+1] or list2[j] == list2[j+2])) or (list2[j] == list1[i+1] and list2[j] == list1[i+2]):
             storage.append([list1[i], list1[i+1], list1[i+2], list2[j], list2[j+1], list2[j+2]])
         else: storage.append([list1[i], list1[i+1], list1[i+2]])
    return storage; #outside of the outer 'for' loop - obtain a list of all 6-element and/or 3-element tuples               

现在在获得所有 3 元组对之后(例如,列表storage 1 个元素的形式为['a','b', 'a','c','a', 'a'] ),我想要获取storage中包含['a', 'b', 'a']所有元素的索引作为 6 元素列表的一部分(例如['a','b', 'a','c','a', 'a'] ) 或 3 元素列表(例如['a','b', 'a'] )- storage仅有的两种列表类型。

题。 谁能帮我验证我的功能是否正确,然后是查找索引的部分? 我将不胜感激任何投入。

这可能会帮助您:

str1 = "abaacbabaacbabca" #...
l = []
l.append("caacaa")
l.append("ghijhg") # any 6 letter long string
l.append("acbaca")
for str2 in l:
    if any(str1[i:i+3] in str2 for i in range(len(str1)-3)):
        print(str2)

它返回(打印):

caacaa
acbaca

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM