1. ホーム
  2. パイソン

[解決済み】ネストされたリストでリスト内包?

2022-04-01 09:48:57

質問

このようなネストしたリストがあります。

l = [['40', '20', '10', '30'], ['20', '20', '20', '20', '20', '30', '20'], ['30', '20', '30', '50', '10', '30', '20', '20', '20'], ['100', '100'], ['100', '100', '100', '100', '100'], ['100', '100', '100', '100']]

さて、私がやりたいことは、リストの各要素をfloatに変換することです。私の解決策はこうだ。

newList = []
for x in l:
  for y in x:
    newList.append(float(y))

でも、これってネストしたリスト内包を使えばできるんでしょう?

をしたものです。

[float(y) for y in x for x in l]

しかし、その結果は100の束で、合計が2400になります。

解決策、説明などありましたら、よろしくお願いします。ありがとうございます。

どのように解決するのですか?

ここでは、ネストされたリスト内包でこれを行う方法を説明します。

[[float(y) for y in x] for x in l]

これは、文字列の代わりに浮動小数点数を使うことを除けば、最初に作ったものと同じようなリストのリストになります。 もし平らなリストをひとつだけ作りたい場合は [float(y) for x in l for y in x] .