Python String和Integer连接

mic*_*ele 330 python string integer concatenation

我想在for循环中使用附加到它的整数创建字符串.像这样:

for i in range(1,11):
  string="string"+i
Run Code Online (Sandbox Code Playgroud)

但它返回一个错误:

TypeError: unsupported operand type(s) for +: 'int' and 'str'
Run Code Online (Sandbox Code Playgroud)

连接String和Integer的最佳方法是什么?

YOU*_*YOU 261

for i in range (1,10):
    string="string"+str(i)
Run Code Online (Sandbox Code Playgroud)

要得到string0, string1 ..... string10,你可以这样做

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

  • 反叛是各种愚蠢的. (3认同)
  • 仍然值得一提的是,反引号相当于`repr()`,而不是`str()`. (3认同)

Ani*_*mj' 241

注意:

此答案(反引号)中使用的方法在Python 2的更高版本中已弃用,并在Python 3中删除.请改用此str()函数.


您可以使用 :

string = 'string'
for i in range(11):
    string +=`i`
print string
Run Code Online (Sandbox Code Playgroud)

它会打印出来string012345678910.

为了让string0, string1 ..... string10你可以使用这个@YOU建议

>>> string = "string"
>>> [string+`i` for i in range(11)]
Run Code Online (Sandbox Code Playgroud)

根据Python3更新

您可以使用 :

string = 'string'
for i in range(11):
    string +=str(i)
print string
Run Code Online (Sandbox Code Playgroud)

它会打印出来string012345678910.

为了让string0, string1 ..... string10你可以使用这个@YOU建议

>>> string = "string"
>>> [string+str(i) for i in range(11)]
Run Code Online (Sandbox Code Playgroud)

  • 这个答案已经过时了.反引号已过时,已在Python 3中删除.有关详细信息,请参阅[此问题](http://stackoverflow.com/questions/1673071/what-do-backticks-mean-to-the-python-interpreter-num) .这个问题的其他答案是更好的解决方案. (30认同)
  • 在Python3中,您可以像这样使用f字符串: string = f'{str}{number}' (2认同)

Riz*_*sim 34

for i in range[1,10]: 
  string = "string" + str(i)
Run Code Online (Sandbox Code Playgroud)

str(i)函数将整数转换为字符串.


Ign*_*ams 33

string = 'string%d' % (i,)
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个列表,这是一个元组.如果要格式化的单个项目本身就是一个元组,那么你也需要它. (3认同)

Tim*_*ker 18

for i in range(11):
    string = "string{0}".format(i)
Run Code Online (Sandbox Code Playgroud)

你做了什么(range[1,10])

  • 一个TypeError,因为括号表示列表的index(a[3])或slice(a[3:5]),
  • 一个SyntaxError因为[1,10]无效,和
  • 因为range(1,10)[1, 2, 3, 4, 5, 6, 7, 8, 9],你似乎想要一个双重的一个错误[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

并且string = "string" + i是一个TypeError,因为您无法向字符串添加整数(与JavaScript不同).

查看Python的新字符串格式化方法的文档,它非常强大.


小智 5

您可以使用发电机来做到这一点!

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)) + ']'
Run Code Online (Sandbox Code Playgroud)