0

こんにちは、私は関数から計算されたリストを持っています

ab = (x, x1, x2, x3, x4, x5, x6, x7, x8)

ここで、x、x1 などは、距離方程式から計算された浮動小数点数です。リスト内のこれらの各浮動小数点値を取得して、それらを既知の値と比較する方法はありますか? いえ

knowndistance = 200

値が既知の距離より大きい場合はより大きい値を出力し、より小さい場合はより小さい値を出力します。次に、結果よりも小さいものと大きいものをすべて収集し、それらを 2 つの別々のリストに入れたいと思います。

したがって、ab のすべての値を比較して、ステートメントごとに if を入力する代わりに、これを実行できるコードがあるかどうかを確認したいと思います。私の現在のコードは以下にありますが、フロートでは機能しませんか?

new_list = []
for i, x in enumerate(ab):
  if x < knowndistance:
    lessthan = "Station {} average is less than {}".format(i+1, knowndistance)


comicdb = []

record = {}
record = lessthan
comicdb.append(record)
new_list.extend(comicdb)

事前にご協力いただきありがとうございます:)

4

2 に答える 2

0

コード内で頻繁にキーを検索する必要がある場合は、データを事前に並べ替えて、バイナリ検索を実行することをお勧めします。ルックアップの頻度と入力データの長さに基づいて、これは効率的です

>>> import bisect
>>> import random
>>> ab = [random.random()*100 for _ in range(20)]
>>> ab = sorted(ab)
>>> knowndist = 50
>>> index = bisect.bisect_left(ab, knowndist)
>>> left = ab[:index]
>>> right = ab[index:]
>>> left
[0.7247004541477753, 4.854550484568454, 5.07097854581271, 5.768240615684894, 39.99461725759485]
>>> right
[61.05798332602631, 62.49927871117734, 64.18742114760279, 64.33592616994855, 67.47713405587675, 69.82614000336153, 70.8239641304042, 73.52120950142177, 76.36583812405388, 77.21433592853452, 80.63221055514911, 82.32348252610743, 91.75223944014984, 95.04315728608329, 99.04521000455324]
于 2013-05-30T08:12:05.057 に答える
0

リスト内包表記を使用すると、フィルタリングされた一連の値をすばやく取得できます。

lessthan = [v for v in ab if v < knowndistance]
greaterthan = [v for v in ab if v >= knowndistance]

またはループを使用して値を分割します。

lessthan, greaterthan = [], []
for v in ab:
    if v < knowndistance:
        lessthan.append(v)
    else:
        greaterthan.append(v)

greaterthanは厳密にここにあることに注意してください。ただしgreater then or equal to、正確に に等しい値を無視する必要がある場合は、テストを強化できますknowndistance

于 2013-05-30T07:56:24.933 に答える