Je veux créer une chaîne en utilisant un entier ajouté, dans une boucle for. Comme ça:
for i in range(1,11):
string="string"+i
Mais cela retourne une erreur:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Quelle est la meilleure façon de concaténer String et Integer?
La méthode utilisée dans cette réponse (backticks) est obsolète dans les versions ultérieures de Python 2 et supprimée dans Python 3. Utilisez plutôt la fonction str()
.
Vous pouvez utiliser :
string = 'string'
for i in range(11):
string +=`i`
print string
Il imprimera string012345678910
.
Pour obtenir string0, string1 ..... string10
, vous pouvez l'utiliser comme @YOU vous l'a suggéré.
>>> string = "string"
>>> [string+`i` for i in range(11)]
Vous pouvez utiliser :
string = 'string'
for i in range(11):
string +=str(i)
print string
Il imprimera string012345678910
.
Pour obtenir string0, string1 ..... string10
, vous pouvez l'utiliser comme @YOU vous l'a suggéré.
>>> string = "string"
>>> [string+str(i) for i in range(11)]
for i in range (1,10):
string="string"+str(i)
Pour obtenir string0, string1 ..... string10
, vous pouvez faire comme
>>> ["string"+str(i) for i in range(11)]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10']
for i in range[1,10]:
string = "string" + str(i)
La fonction str(i)
convertit l'entier en chaîne.
string = 'string%d' % (i,)
for i in range(11):
string = "string{0}".format(i)
Ce que vous avez fait (range[1,10]
) est
a[3]
) ou une tranche (a[3:5]
) d'une liste,[1,10]
n'est pas valide, etrange(1,10)
est [1, 2, 3, 4, 5, 6, 7, 8, 9]
, et vous semblez vouloir [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Et string = "string" + i
est un TypeError car vous ne pouvez pas ajouter un entier à une chaîne (contrairement à JavaScript).
Regardez la documentation de la nouvelle méthode de formatage de chaîne de Python , elle est très puissante.
Vous pouvez utiliser un générateur pour le faire!
def sequence_generator(limit):
""" A generator to create strings of pattern -> string1,string2..stringN """
inc = 0
while inc < limit:
yield 'string'+str(inc)
inc += 1
# to generate a generator. notice i have used () instead of []
a_generator = (s for s in sequence_generator(10))
# to generate a list
a_list = [s for s in sequence_generator(10)]
# to generate a string
a_string = '['+", ".join(s for s in sequence_generator(10))+']'
Si nous voulons une sortie telle que 'string0123456789'
, nous pouvons utiliser la méthode map function
et join
de chaîne.
>>> 'string'+"".join(map(str,xrange(10)))
'string0123456789'
Si nous voulons une liste de valeurs de chaînes, utilisez la méthode list comprehension
.
>>> ['string'+i for i in map(str,xrange(10))]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9']
Note:
Utilisez xrange()
pour Python 2.x
UTILISER range()
pour Python 3.x
J'ai fait autre chose. Je voulais remplacer un mot, dans des listes de listes, qui contenait des phrases. Je voulais remplacer ce mot/mot par un nouveau mot qui sera une jointure entre chaîne et nombre, et ce nombre/chiffre indiquera la position de la phrase/sous-liste/liste de listes.
C'est-à-dire que j'ai remplacé une chaîne par une chaîne et un nombre incrémental qui la suit.
myoldlist_1=[[' myoldword'],[''],['tttt myoldword'],['jjjj ddmyoldwordd']]
No_ofposition=[]
mynewlist_2=[]
for i in xrange(0,4,1):
mynewlist_2.append([x.replace('myoldword', "%s" % i+"_mynewword") for x in myoldlist_1[i]])
if len(mynewlist_2[i])>0:
No_ofposition.append(i)
mynewlist_2
No_ofposition