2016-10-01 7 views
0

私はこのリストのリストを持っています。各ネストされたリストはn+1要素を持ち、最初の要素は浮動小数点数であり、最後の要素は整数です。私は入れ子にされたリストごとにすべての浮動小数点数を得る必要があります(したがって、n個の要素はn+1です)。これを達成するための最良の方法はどれですか?例えばリストのリストでは、各リストの最後のアイテムを除くすべてのアイテムを取得する方法はありますか?

:あなたがいる場合

x = [[0.1, 0.2, 1], [0.4, 0.05, 16], [0.3, 0.3, 5]] 
output = [[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]] 

答えて

2

特定int常に最後となり、スライスは、あなたがsub[:-1]x内のすべてのサブリストsubから最後の要素を切り落とすことにより、オプションです([:-1]最後の要素を除くすべてを取得することを意味します)。

out = [sub[:-1] for sub in x] # or sub[:2] if sub is always 3 elements long 
print(out) 
[[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]] 

または、これを繰り返すことでこれを行うことができますそれはfloatのインスタンスである場合、各サブ要素を反復及び評価、xの要素をGHすなわち:

out = [[i for i in sub if isinstance(i, float)] for sub in x] 

これは、任意の要素にISN x内のサブリストであるリストsubをフィルタリングタイプfloatのインスタンスです。最後に、インプレースアプローチのために、forルーピングとpop INGが実行可能である

print(out) 
[[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]] 

:これはintの位置は常に最後にされていない場合ので、あなたがそれを使用することができポジショニングの関わらずを運営しますオプション:

print(x) 
[[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]] 
:今x

for s in x: _ = s.pop() 

がに変異しています

+0

誰かがこの回答が役に立たないと思ったら、私はそれを編集して修正すること以上に喜んでいます。 :-) –

4

これが最短と最も簡単な方法です:それはlist comprehension呼ばれ

output = [l[:-1] for l in x] 

関連する問題