我有以下代码:了解Python列表理解等同
listOfStrings = ['i_am_exercising', 'python_functional', 'lists_comprehension']
[ "".join([elem.title() for elem in splited]) for splited in [el.split("_")for el in listOfStrings]]
这样做的结果是:
['IAmExercising', 'PythonFunctional', 'ListsComprehension']
阅读documentation,我得到了相当的扩展版本,这使第一表达在要附加的变量中,第二个表达式用for语句迭代:
returned = []
for splited in [el.split("_")for el in listOfStrings]:
returned.append("".join([elem.title() for elem in splited]))
但是,如果我想编写没有任何列表理解相同的代码,如何做到这一点的最佳方式?我试着用下面的代码,效果很好:
returned = []
temp = []
for el in listOfStrings:
temp = []
for splited in el.split("_"):
temp.append(splited.title())
returned.append("".join(temp))
但我没有完全了解如何做到这一点(变换列表理解为等效满扩展形式)
迂腐点:' “”。加入(elem.title(),用于splited ELEM)'是* *技术上自由列表解析的,因为它直接传递发电机以'加入',而不是由使用相同生成器的列表理解创建的列表。但是这样的区分绕过你真正的问题:) – chepner
感谢您的发电机=) –