У меня есть список кортежей, содержащих год и соответствующее население в середине года, как показано ниже:
MIDYEAR_POPULATION = [(1971, 21962032), (1972, 22218463), (1973, 22491777), (1974, 22807969), (1975, 23143275),
(1976, 23449808), (1977, 23725843), (1978, 23963203), (1979, 24201544), (1980, 24515667),
(1981, 24819915), (1982, 25116942), (1983, 25366451), (1984, 25607053), (1985, 25842116),
(1986, 26100278), (1987, 26446601), (1988, 26791747), (1989, 27276781), (1990, 27691138),
(1991, 28037420), (1992, 28371264), (1993, 28684764), (1994, 29000663), (1995, 29302311),
(1996, 29610218), (1997, 29905948), (1998, 30155173), (1999, 30401286), (2000, 30685730),
(2001, 31020596), (2002, 31358418), (2003, 31641630), (2004, 31938004), (2005, 32242364),
(2006, 32570505), (2007, 32887928), (2008, 33245773), (2009, 33628571), (2010, 34005274),
(2011, 34342780), (2012, 34750545), (2013, 35152370), (2014, 35535348), (2015, 35832513),
(2016, 36264604), (2017, 36708083), (2018, 37057765), (2019, 37589262)]
Ниже моего кода для нахождения минимума:
pop_stats = MIDYEAR_POPULATION
def smallest_increase(pop_stats):
min_diff = 0
min_elem = -1
for (year, population) in zip(MIDYEAR_POPULATION, MIDYEAR_POPULATION[1:]) :
diff = abs(population[1]-year[1])
if diff > min_diff :
min_diff = diff
min_elem = population
print(min_elem)
Однако это возвращает максимальную разницу, и я хочу найти минимальную разницу из года в год, а затем вернуть ее как (the year, the actual value of the min difference)
.