【发布时间】:2016-03-17 16:13:27
【问题描述】:
我正在尝试打印一个字符串,该字符串具有每个字母的连续数量,因此该字符串应打印“aaabaaccc”。谁能告诉我哪里出错了,因为我只是python的初学者
h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)]
g = ''
for f in h:
g = g + f
【问题讨论】:
我正在尝试打印一个字符串,该字符串具有每个字母的连续数量,因此该字符串应打印“aaabaaccc”。谁能告诉我哪里出错了,因为我只是python的初学者
h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)]
g = ''
for f in h:
g = g + f
【问题讨论】:
您可以使用 Python 列表推导来避免字符串连接。
print ''.join(letter * count for letter, count in [("a", 3), ("b", 1), ("a", 2), ("c", 3)])
这将打印:
aaabaaccc
【讨论】:
h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)]
g = ''
for char, count in h:
#g = g + f #cant convert tuple to string implicitly
g=g+char*count
print(g)
String*n 重复字符串 n 次。
【讨论】:
h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)]
g = ''
for i, j in h: # For taking the tuples into consideration
g += i * j
print(g) # printing outside for loop so you get the final answer (aaabccc)
【讨论】:
您正在尝试将您的元组(两个项目)解包为一个,这是您无法做到的。
试试这个:
for letter, multiplier in h:
g += letter * multiplier
【讨论】:
如果 "h" 总是这样格式化,那么一个单行是:
g = "".join([i[0]*i[1] for i in h])
【讨论】:
Python 让你用数字“乘”字符串:
>>> 'a' * 5
'aaaaa'
>>> 'ab' * 3
'ababab'
因此,您可以遍历列表,将字符串“乘以”数字,然后以这种方式构建字符串。
>>> h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)]
>>> g = ''
>>> for letter, number in h:
... g += letter * number
...
>>> print(g)
aaabaaccc
【讨论】: