将字符串的每个字符乘以3

时间:2018-01-14 20:59:21

标签: python

我想"乘以"字符串x的每个字符三次(这样它连续出现三次)。

def triple(x):
    for i in range(len(x)):
        trip = ''
        y = ''
        trip = x[i] *3
        y += trip
    print(y)

目前只打印最后一个字符乘以3次

2 个答案:

答案 0 :(得分:3)

这是因为您每次重置y到循环中的''。所以你可以用:

来解决这个问题
def triple(x):
    y = ''  # initialize y only at the *start* of the loop
    for i in range(len(x)):
        trip = x[i] *3
        y += trip
    print(y)

但它仍然不够优雅且效率低下。我们可以通过使用生成器或列表理解来做更好的事情,例如:

def triple(x):
    print(''.join(c for c in x for _ in range(3)))

或使用 list comprehension

def triple(x):
    print(''.join([c for c in x for _ in range(3))])

我们在这里做的是迭代c的字符x。对于每个这样的角色,我们迭代三次(使用for _ in range(3))。因此,我们每次c每次产生三次。然后我们将这些角色加在一起。

我们还可以在yield中添加字符c或将它们相乘,例如:

def triple(x):
    print(''.join([c+c+c for c in x])

或:

def triple(x):
    print(''.join([3*c for c in x])

答案 1 :(得分:2)

列表理解中,只需将字符串与要重复的字符串相乘,然后再将其连接起来,以创建所需的字符串:

>>> my_str = 'ABC'

>>> ''.join([x*3 for x in my_str])
'AAABBBCCC'