Si j'ai une chaîne comme "combination.py", je veux obtenir le résultat suivant en utilisant Python:

["com" , "omb", "mbi", "bin", "ina", "nat" , "ati" , "tio", "ion", "on.", "n.p" , ".py"]

J'ai quelque chose qui fonctionne assez bien, mais c'est un code très long, donc je cherche quelque chose de court et de beau. :)

Merci

1
JohnDoeTheOne 18 déc. 2011 à 19:42

4 réponses

Meilleure réponse
>>> s = "combination.py" 
>>> [s[i:i+3] for i in range(len(s)-2)]
['com', 'omb', 'mbi', 'bin', 'ina', 'nat', 'ati', 'tio', 'ion', 'on.', 'n.p', '.py']

C'est en effet une bonne habitude de chercher quelque chose de "court et beau". Python est tout à fait apte à cela. :)

10
Eric O Lebigot 18 déc. 2011 à 16:17
    String txt = "combination.py";
for(int i=0;i<txt.length;i++){
  String result = txt.substring(i,i+2)
  System.out.println(result);
  i+=3;
}
-3
Puchong 18 déc. 2011 à 15:54

Une solution simple est

for i in range(0, len(a)-2):
    print a[i:i+3];

Lorsque a est une chaîne.

1
Boris 18 déc. 2011 à 15:47

La fonction

def substrings(s, l=3):
    return [s[k:k+l] for k in range(len(s)-l+1)]

Appelé comme

substrings("combination.py")

Les rendements

['com', 'omb', 'mbi', 'bin', 'ina', 'nat', 'ati', 'tio', 'ion', 'on.', 'n.p', '.py']
3
Jan Pöschko 18 déc. 2011 à 15:48