我知道这个想法是通过字符串,如果下一个字母与当前字母相同,继续,否则,打破并打印并重新开始,我只是无法正确实现它。
ObjectAnimator scaleX = ObjectAnimator.ofFloat(img1, "scaleX", (float) img2.getWidth());
ObjectAnimator scaleY = ObjectAnimator.ofFloat(img1, "scaleY", (float) img2.getHeight());
scaleX.setDuration(2000);
scaleY.setDuration(2000);
AnimatorSet scale = new AnimatorSet();
scale.play(scaleX).with(scaleY);
scale.start();
答案 0 :(得分:2)
一种方法是使用groupby
中的itertools
:
from itertools import groupby
[''.join(g) for _, g in groupby(test)]
# ['AAA', 'T', 'GG']
答案 1 :(得分:1)
我可能只是使用itertools.groupby
:
>>> import itertools as it
>>> s = 'AAATGG'
>>> for k, g in it.groupby(s):
... print(k, list(g))
...
('A', ['A', 'A', 'A'])
('T', ['T'])
('G', ['G', 'G'])
>>>
>>> # Multiple non-consecutive occurrences of a given value.
>>> s = 'AAATTGGAAA'
>>> for k, g in it.groupby(s):
... print(k, list(g))
...
('A', ['A', 'A', 'A'])
('T', ['T', 'T'])
('G', ['G', 'G'])
('A', ['A', 'A', 'A'])
如您所见,g
成为一个可迭代的,它产生给定字符(k
)的所有连续出现。我使用list(g)
来使用迭代,但你可以用它做任何你喜欢的事情(包括''.join(g)
来获取字符串,或sum(1 for _ in g)
来获取计数。)
答案 2 :(得分:1)
您可以使用正则表达式:
>>> re.findall(r'((\w)\2*)', test)
[('AAA', 'A'), ('T', 'T'), ('GG', 'G')]
答案 3 :(得分:1)
您也可以使用regex.findall
。在这种情况下,我假设只有字母A,T,C和G存在。
import re
re.findall('(A+|T+|G+|C+)', test)
['AAA', 'T', 'GG']