0

次のコードがあります。

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']

ドキュメントを読んで、同等の拡張バージョンを取得しました。これは、最初の式を追加する変数に入れ、リストの2番目の式を 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))

しかし、私はこれを行う方法を完全には理解していませんでした(リスト内包表記を同等の完全拡張形式に変換してください)

4

2 に答える 2

0

外側から内側に簡単に変換できます。

listOfStrings = ['i_am_exercising', 'python_functional', 'lists_comprehension']

result = [ "".join([elem.title() for elem in split]) for split in [el.split("_")for el in listOfStrings]]
print result

result = []
for split in [el.split("_") for el in listOfStrings]:
    result.append("".join([elem.title() for elem in split]))
print result

result = []
temp1 = []
for el in listOfStrings:
    temp1.append(el.split("_"))
for split in temp1:
    result.append("".join([elem.title() for elem in split]))
print result

result = []
temp1 = []
for el in listOfStrings:
    temp1.append(el.split("_"))
for split in temp1:
    temp2 = []
    for elem in split:
        temp2.append(elem.title())
    result.append("".join(temp2))
print result

基本的には、次のスキームに従うだけです。

result = [foo for bar in baz]

に変わります

result = []
for bar in baz:
    result.append(foo)
于 2013-05-16T19:13:51.887 に答える