2017-11-12 11 views
0

私はN個の座標のタプルがN個(N次元)のリストを持っています。 各座標はsympy式であり、実際の点のみを取りたい(すべての座標は実数です)。Pythonはフィルターを減らす

私は、次のコードを書きました:(NameError: name 'reduce' is not defined

points = filter(lambda p: reduce(
    lambda c1, c2: c1.is_real and c2.is_real, p), points) 

をそして、それは動作しません。私は明らかにこれらの表現の仕組みを完全に理解していませんが、私には似たものが欲しいと思っています:

remove_points = [] 
for point in points: 
    for coordinate in point: 
     if not coordinate.is_real: 
      remove_points.append(point) 
      break 
for point in remove_points: 
    points.remove(point) 

誰かが私が間違っていた箇所を指摘することはできますか?

答えて

1

どのPythonバージョンを使用しますか? reducePython 3で削除されました。

listremove_pointsに使用しないでください。代わりにsetを使用してください。これは高速になります。

2番目のアプローチがうまくいかない場合はどうすればよいですか?しかし、おそらくあなたは次のことも考えてみたいです:

+0

私はPython3を使っていますが、私は最近Python2から移動し、変更を認識していませんでした。私は第2のアプローチをよりエレガントなものに置き換えたいと思っています –

+0

そしてそれはもちろん私はそれをマークしました –

関連する問題