简体   繁体   中英

Put a symbol between every letter in a list of strings

How would I put ! after every character in a list

listOne = ["hello","world"]

How do I turn that into:

["h!e!l!l!o","w!o!r!l!d"]

Attempt:

def turn(List):
    return [i for i in (list(lambda x: "%s!" % x,listOne))]
turn(listOne)

Returns:

['hello!',"world!"]

Is their another way to do this besides:

def turn(List):
    x = ""
    for word in words:
        for letter in word:
            x += "%s!" % letter
    return x
turn(listOne)

I'm not a big fan of doing things like that however I do realize that may be more pythonic than what I'm trying to do which is make it as few lines as possible so. Is this possible?

You can easily achieve this with the str.join() method, and list comprehension :

>>> listOne = ['!'.join(i) for i in listOne]
>>> listOne

Output

['h!e!l!l!o', 'w!o!r!l!d']

Alternatively, as abarnert suggested, you can use the bulit-in map function.

>>> listOne = list(map('!'.join, listOne))
>>> listOne
['h!e!l!l!o', 'w!o!r!l!d']

Hope this helps!

listOne = ["hello","world"]

listTwo = ['!'.join([x for x in word]) for word in listOne]

How about this?

["!".join(s) for s in ["hello", "world"]]

Or more specific:

def turn(l):
    return ["!".join(s) for s in l]

Edit: Removed wrapping of the string in list() as str.join takes every iterable object (those that implement __iter__() ), and, thus strings as well. Courtesy to @alKid.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM