在这种情况下,我有两个词(代码和问题),在其中每个元音之后,我想放一个特定的符号(在我的情况下,我决定使用“#”)。 我设法列出了一个单词中某个元音后的符号(例如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中完成吗?
答案 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']