第二行不understand,可以拆分1下吗,或者解释也行
def decodeMorse(morse_code):
return ' '.join(''.join(MORSE_CODE[letter] for letter in word.split(' ')) for word in morse_code.strip().split(' '))
print(decodeMorse('.... . -.-- .--- ..- -.. .'))
得,老朋友了。
原代码等价于:
def decodeMorse(morse_code):
str=""
for word in morse_code.strip().split(' ')): # 将摩斯电码中三个空格认为是分割单词的标志,并用此分割出代码单词的摩斯字符串
for letter in word.split(' '): # 对于上次分割出的单词,认为一个空格是字母之间的分割标志,并用此分出代表字母的摩斯字符串
str+=MORSE_CODE[letter] # MORSE_CODE应该是一个字典,key为电码的字符串,值为串对应的字母,这样通过MORSE_CODE[电码字符串]就能得到对应的字母
return str
print(decodeMorse('.... . -.-- .--- ..- -.. .'))
顺便一提,这里运用的语法是生成器(generator)表达式,类似于列表解析。
语法为(表达式 for 迭代变量 in 可迭代对象),该表达式返回一个生成器(可以认为是可迭代对象)
而join()函数接受的参数是一个sequence,可以看到,原代码中的表达式返回的是可迭代的字符串,这是序列(sequence)的一种,所以可以用生成器表达式简化循环
缺少参数:MORSE_CODE