Список Python с диапазонами

Допустим, у меня есть список с возрастом (который представляет продолжительность жизни страны):

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

Теперь у меня есть диапазоны ожидаемой продолжительности жизни, которые увеличиваются вдвое (диапазон 48-100), что-то вроде этого:

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

Я хотел бы создать новый список, который имеет список для каждого возраста в возрасте. Внутренний список содержит 1, если данный возраст находится в диапазоне ожидаемой продолжительности жизни, и 0, если это не так.

Таким образом, результат будет выглядеть примерно так:

Каждый внутренний список принадлежит возрасту из веков

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

Как я могу сделать это?

2 ответа

Решение

Ваша структура для диапазонов немного расплывчата. Предположим, что ваши диапазоны примерно такие

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 с шагом в два, вы можете использовать генератор:

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]
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]]

что (возможно) то, что вы спросили.

Другие вопросы по тегам