【问题标题】:Python lambda to print formatted nested listPython lambda 打印格式化的嵌套列表
【发布时间】:2013-04-13 17:56:21
【问题描述】:

练习几件事:lambda 函数和字符串操作。我想在不导入任何内容的情况下找到最有效的方法。

所以这是一个按字母顺序重新排列单词的简短脚本:

def alphabeticalOrder(word):
    lst = [l for l in word]
    return sorted(lst)


def main ():
    word = raw_input('enter word: ')
    print "".join(alphabeticalOrder(word))


if __name__ == '__main__':
    main()

我想对句子中的所有单词都这样做:

def alphabeticalOrder(line):
    lst = []
    for word in line.split(" "):
        lst.append(sorted(list(word)))
    print lst     # trouble here

def main ():
        line = raw_input('enter sentence: ')
        print alphabeticalOrder(line)

if __name__ == '__main__':
    main()

所以我的问题是;你能写一个 lambda 函数来遍历lst 中的嵌套列表,将每个项目打印为一个按字母顺序重新排序的单词字符串吗?

【问题讨论】:

    标签: python string list lambda


    【解决方案1】:

    这里的列表推导更容易:

    ' '.join([''.join(sorted(word)) for word in sentence.split()])
    

    请注意,我们可以将字符串传递给sorted()直接

    一个 lambda 只不过是一个带有单个表达式的函数,它可以定义为一个表达式本身;这里我先将 lambda 结果赋值给一个变量:

    alphabeticalWord = lambda w: ''.join(sorted(word))
    
    ' '.join([alphabeticalWord(word) for word in sentence.split()])
    

    【讨论】:

      【解决方案2】:

      你想要这个:

      ' '.join([''.join(sorted(word)) for word in sentence.split(' ')])
      

      【讨论】:

        【解决方案3】:

        第一种句子处理方法的改进版本:

        def alphabeticalOrder(word):
            return "".join(sorted(lst)) #return the sorted string
        
        
        def main ():
            sent = raw_input('enter sentence: ')
            print " ".join(map(alphabeticalOrder,sent.split())) #map alphabeticalOrder to each
                                                                #word in the sentence
        
        
        if __name__ == '__main__':
            main()
        

        输出:

        enter sentence: foo bar spam eggs
        foo abr amps eggs
        

        【讨论】:

          猜你喜欢
          • 2013-10-24
          • 2012-11-26
          • 2020-07-25
          • 1970-01-01
          • 1970-01-01
          • 2015-08-11
          • 2021-04-09
          • 1970-01-01
          相关资源
          最近更新 更多