1

年齢(国の平均余命を表す)のリストがあるとしましょう:

ages= ['70.37668898', '72.15779044', '73.25278702', '72.18979793', '80.73137673','55.43124818' '54.16265064', '54.16540964', ...]

今、私は2つ上がる平均余命の範囲(範囲48-100)を持っています、これは次のようなものです:

48-50,50-52, ...., 98-100

年齢別のリストを含む新しいリストを作成したいと思います。内側のリストには、指定された年齢が平均余命の範囲内にある場合は1が含まれ、そうでない場合は0が含まれます。

したがって、結果は次のようになります。

各内部リストは、年齢からの年齢に属しています

[[0,0,0,0,1, ..., 0],[0,1,0,0,0, ..., 0],...] 

どうすればこれを達成できますか?

4

2 に答える 2

5

範囲の構造は少しあいまいです。あなたの範囲がこれらのようなものであると仮定しましょう

ranges = [(48,50),(50,52),...(98,100)]

ages= ['70.37668898', '72.15779044', '73.25278702', '72.18979793', '80.73137673','55.43124818' '54.16265064', '54.16540964', ...]

result = [ [ 1 if (r[0] <= age <= r[1]) else 0 for r in ranges] for age in ages]

または、範囲が固定されており、50 から 100 まで 2 ずつ増加する場合は、ジェネレーターを使用できます。

result = [ [ 1 if (r[0] <= age <= r[1]) else 0 for r in ( (i-2,i) for i in range(50,100,2)) ] for age in ages]
于 2013-01-22T22:30:50.430 に答える
1
ages = [70.37668898, 72.15779044, 73.25278702, 72.18979793, 80.73137673, 55.43124818, 54.16265064, 54.16540964]
[[int(age >= 48+2*i and age <50+2*i) for i in range(25)] for age in ages]

結果は

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

これは(おそらく)あなたが尋ねたものです。

于 2013-01-22T22:29:22.483 に答える