如何合并列表中的多个元素?

时间:2019-04-13 14:41:03

标签: python python-3.x

在这种情况下,我有两个词(代码和问题),在其中每个元音之后,我想放一个特定的符号(在我的情况下,我决定使用“#”)。 我设法列出了一个单词中某个元音后的符号(例如co#de) 现在剩下的一切,我想将这些词合并在一起。我什至决定在这里采取正确的方法吗?

我有一个包含6个元素的列表:

# there is "#" after every vowel in a word
lst = ["code#", "que#stion", "questi#on", "co#de", "questio#n", "qu#estion"]

我想将这些元素合并在一起,所以我可以得到只有两个元素的新列表。

# the two words stay the same, but there are now multiple "#" in every word
new_lst = ["co#de#", "qu#e#sti#o#n"]

这甚至可以在python中完成吗?

4 个答案:

答案 0 :(得分:1)

从全新的mark开始的list开始可以吗:)

>>> poundit = lambda x: ''.join('{}#'.format(y) if y.lower() in ['a', 'e', 'i', 'o', 'u'] else y for y in x)
>>> lst
['code#', 'que#stion', 'questi#on', 'co#de', 'questio#n', 'qu#estion']
>>> set(poundit(x) for x in (y.replace('#', '') for y in lst))
set(['qu#e#sti#o#n', 'co#de#'])

答案 1 :(得分:0)

遍历每个单词的每个字母,在旧单词中换一个新单词,并在找到元音时附加一个“#”

words = ['code', 'question']
vowels = ['a', 'e', 'i', 'o', 'u']
new_words = []
#Iterate through words
for word in words:
    new_word = ''
    #Iterate through letters
    for letter in word:
        new_word+= letter
        #Add a # when you find a vowel
        if letter in vowels:
            new_word+='#'
    new_words.append(new_word)
print(new_words)
#['co#de#', 'qu#e#sti#o#n']

答案 2 :(得分:0)

new_words = []
for word in words:
    temp_word = ""
    for element in word:
        if element not in vowels:
            temp_word += element
        else:
            temp_word += element
            temp_word += "#"
    new_words.append(temp_word)

答案 3 :(得分:-1)

使用正则表达式执行此操作

import re
lst = ["code#", "que#stion", "questi#on", "co#de", "questio#n", "qu#estion"]

def func(x):
   o = ''
   for c in x:
       o += c
       if c.lower() in 'aeiou':
           o += '#'
   return o

x = list(map(func, set(map(lambda x: re.sub('#', '', x), lst))))
print(x)

Out: ['co#de#', 'qu#e#sti#o#n']