【问题标题】:Adding all the numbers from a list together(not summing). Python 3.3.2 [duplicate]将列表中的所有数字加在一起(不求和)。 Python 3.3.2 [重复]
【发布时间】:2013-09-15 19:51:46
【问题描述】:

说我有这个清单:

alist = [2, 0, 1]

如何使名为“hahaha”的字符串例如等于 201 ?不是 5(总和)。 我需要类似“

for number in alist .....

谢谢!

【问题讨论】:

  • 只是为了将其打印为201,您可以这样做:print (*alist, sep='')

标签: python list python-3.x


【解决方案1】:

您可以将''.join()map() 结合使用:

>>> alist = [2, 0, 1]
>>> ''.join(map(str, alist))
'201'

【讨论】:

  • imap 不会创建中间列表:P
【解决方案2】:

这就是你要找的吗?

hahaha = ''.join([str(num) for num in alist])
print hahaha  # '201'

解释发生了什么:

[str(num) for num in alist] 部分被称为“列表理解”——它就像一个非常浓缩的for-loop,将一个列表转换为另一个列表。在这种情况下,它将[2, 0, 1] 变成['2', '0', '1']

(当然,我们可以将其编写为 for 循环而不是列表推导式,但它需要更多的代码行,并且输入起来有点乏味)

''.join(list) 的部分部分获取一个字符串列表,并将它们与空字符串作为分隔符粘在一起。如果我要执行'+'.join([str(num) for num in alist]),则输出将改为'2+0+1'

因此,该行可以被认为是一系列转换,将初始列表慢慢转换为字符串。

[2, 0, 1] -> ['2', '0', '1'] -> '201'

我们也可以将整个过程包装成一个函数,如下所示:

def make_str(list):
    return ''.join([str(num) for num in list])

print make_str([4, 3, 2, 9])  # '4329'
print make_str([9, 0, 0, 9])  # '9009'

【讨论】:

    【解决方案3】:

    字符串连接函数需要一个字符串列表。

    ''.join([str(i) for i in alist])
    

    【讨论】:

      【解决方案4】:

      怎么样:

      >>> alist = [2, 0, 1]
      >>> "".join(str(i) for i in alist)
      '201'
      

      join() 方法中的代码是generator expression

      【讨论】:

      猜你喜欢
      • 2018-04-03
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多