从列表的元素Python生成元组对

2024-05-20 16:25:41 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个很简单的问题,但从昨晚开始我就想不出怎么做了。 假设我有一个清单:

L = ['AAG', 'AGA', 'GAT', 'ATT', 'TTC', 'TCT', 'CTC', 'TCT', 'CTA', 
     'TAA', 'AAG', 'AGA']

我在这个列表中有12个元素,所以我可以像第一个元素,第二个元素是第一个元素,第二个元素,第三个元素是第二对元素,接下来是其他元素。 以下是配对后的效果:

^{pr2}$

现在我要从每对元素中提取第一个元素,并检查该元素是否作为对中的第一个元素存在于另一个元素中;如果存在,那么我将打印如下:AAG->;AGA,AGA。“AAG”作为第一个元素出现在第一对和最后一个对中。 所以整个输出结果如下:

^{3}$

怎么办?在


Tags: gt元素列表attgat效果ttccta
3条回答

这是一个非常简单的defaultdict。除最后一个外,每三个字母的字符串都可以看作是一个或多个对的开始。对于每个索引i,只需将i+1处的字符串追加到与元素i关联的列表中作为起始字符串。在

from collections import defaultdict
L = ['AAG', 'AGA', 'GAT', 'ATT', 'TTC', 'TCT', 'CTC', 'TCT', 'CTA', 'TAA', 'AAG', 'AGA']

my_map = defaultdict(list)
for i in range(len(L)-1):
    my_map[L[i]] += [L[i+1]]

for start, end in my_map.iteritems():
    print start, end
>>> L = ['AAG', 'AGA', 'GAT', 'ATT', 'TTC', 'TCT', 'CTC', 'TCT', 'CTA', 'TAA', 'AAG', 'AGA']
>>> L2 = zip(L, L[1:])
>>> from collections import defaultdict
>>> D = defaultdict(list)
>>> for i, j in L2:
...     D[i].append(j)
... 
>>> for k in sorted(D):
...     print(k, "->", ",".join(D[k]))
... 
AAG -> AGA,AGA
AGA -> GAT
ATT -> TTC
CTA -> TAA
CTC -> TCT
GAT -> ATT
TAA -> AAG
TCT -> CTC,CTA
TTC -> TCT

第一部分:

>>> L = ['AAG', 'AGA', 'GAT', 'ATT', 'TTC', 'TCT', 'CTC', 'TCT', 'CTA', 'TAA', 'AAG', 'AGA']
>>> zip(L,L[1:])
[('AAG', 'AGA'), ('AGA', 'GAT'), ('GAT', 'ATT'), ('ATT', 'TTC'), ('TTC', 'TCT'), ('TCT', 'CTC'), ('CTC', 'TCT'), ('TCT', 'CTA'), ('CTA', 'TAA'), ('TAA', 'AAG'), ('AAG', 'AGA')]

第二部分是:

^{pr2}$

相关问题 更多 >