Python String en Integer aaneenschakeling [dubbele]

Ik wil string met behulp van integer toegevoegd om het te maken, in een lus. Zoals dit:

for i in range(1,11):
  string="string"+i

Maar het geeft een foutmelding:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Wat is de beste manier om de String en aaneenschakelen Integer?


Antwoord 1, Autoriteit 100%

Opmerking:

De methode die in deze reactie (backticks) wordt afgeraden nieuwere versies van Python 2 en verwijderd Python 3. Gebruik str()functie plaats.


U kunt gebruiken:

string = 'string'
for i in range(11):
    string +=`i`
print string

Het zal drukken string012345678910.

Om string0, string1 ..... string10kunt u dit als @YOU gesuggereerd gebruiken

>>> string = "string"
>>> [string+`i` for i in range(11)]

Update uit per python3

U kunt gebruiken:

string = 'string'
for i in range(11):
    string +=str(i)
print string

Het zal drukken string012345678910.

Om string0, string1 ..... string10kunt u dit als @YOU gesuggereerd gebruiken

>>> string = "string"
>>> [string+str(i) for i in range(11)]

Antwoord 2, Autoriteit 94%

for i in range (1,10):
    string="string"+str(i)

Om string0, string1 ..... string10te krijgen, kun je het volgende doen:

>>> ["string"+str(i) for i in range(11)]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10']

Antwoord 3, autoriteit 13%

for i in range[1,10]: 
  string = "string" + str(i)

De functie str(i)converteert het gehele getal naar een tekenreeks.


Antwoord 4, autoriteit 12%

string = 'string%d' % (i,)

Antwoord 5, autoriteit 7%

for i in range(11):
    string = "string{0}".format(i)

Wat je hebt gedaan (range[1,10]) is

  • een TypeError aangezien haakjes een index (a[3]) of een segment (a[3:5]) van een lijst aangeven,
  • een SyntaxError sinds [1,10]is ongeldig, en
  • een dubbele off-by-one-fout aangezien range(1,10)[1, 2, 3, 4, 5, 6, 7, 8, 9], en je lijkt te willen [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

En string = "string" + iis een TypeError omdat je geen geheel getal aan een string kunt toevoegen (in tegenstelling tot JavaScript).

Bekijk de documentatie voor Python’s nieuwe tekenreeksopmaakmethode, het is erg krachtig.


Antwoord 6

U kunt hiervoor een generator gebruiken!

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))+']'

Antwoord 7

Als we uitvoer willen zoals 'string0123456789', dan kunnen we de map functionen de joinmethode van string gebruiken.

>>> 'string'+"".join(map(str,xrange(10)))
'string0123456789'

Als we een lijst met tekenreekswaarden willen, gebruik dan de list comprehension-methode.

>>> ['string'+i for i in map(str,xrange(10))]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9']

Opmerking:

Gebruik xrange()voor Python 2.x

Gebruik range()voor Python 3.x


Antwoord 8

Ik heb iets anders gedaan.
Ik wilde een woord vervangen, in lijsten van lijsten, dat zinnen bevatte.
Ik wilde die string / dat woord vervangen door een nieuw woord dat een join zal zijn tussen string en nummer, en dat nummer / cijfer geeft de positie aan van de zin / sublijst / lijst met lijsten.

Dat wil zeggen, ik heb een string vervangen door een string en een oplopend nummer dat erop volgt.

   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

Antwoord 9

Aaneenschakeling van een string en integer is eenvoudig:
gebruik gewoon

abhishek+str(2)

Other episodes