这是我到目前为止 - 但是当我输入'the'时它打印[tt],[tt,hh],[tt,hh,ee]
def doubleChar(doubleit):
doubled = []
for letter in doubleit:
doubled.append(letter * 2)
print(doubled)
doubleChar('the')
不是一次伟大的尝试,但却无法想到另一种方式。
答案 0 :(得分:5)
将您的打印件放在循环外部,并将其转换回字符串而不是字母列表。
def doubleChar(doubleit):
doubled = []
for letter in doubleit:
doubled.append(letter * 2)
print("".join(doubled))
doubleChar('the')
顺便说一句,甚至不需要一个功能,一个简单的一个班轮:
>>> r = "the"
>>> "".join(x*2 for x in r)
'tthhee'
答案 1 :(得分:1)
我会用zip:
来做>>> def duplicator(s, n=2):
... return ''.join(x for t in zip(*[s] * n) for x in t)
...
>>> duplicator('the')
'tthhee'
>>> duplicator('potato', 3)
'pppoootttaaatttooo'
答案 2 :(得分:1)
你快到了。您只需要在双重列表中附加不同的条目。
def doubleChar(doubleit):
doubled = []
for letter in doubleit:
doubled.append(letter * 2)
# at this stage you have ['tt', 'hh', 'ee']
# you can join them into a str object
return "".join(doubled)
你也可以使用lambda和comprehention来完成它:
doubleChar = lambda s : "".join([e*2 for e in s])
或者您可以保留循环但使用str对象而不通过列表:
s = "the"
d = ""
for c in s:
d = d + e*2
print(d)
>> 'tthhee'
答案 3 :(得分:1)
只是为了好玩,这是一种使用扩展切片的不寻常方式
>>> s='the'
>>> (s+(' '+s*2)*len(s))[::len(s)+1]
'tthhee'
>>> s="hello world"
>>> (s+(' '+s*2)*len(s))[::len(s)+1]
'hheelllloo wwoorrlldd'
答案 4 :(得分:0)
reduce(lambda s, c: s + c + c, "hello", "")