Таким образом, я упростил этот код, выполнив цикл for по списку 2009-2018 годов и применив функцию для деления каждого элемента в каждом списке на общее количество в каждом списке и умножения его на 100, а затем с помощью pd. DataFrame для создания dataframe и указания имен индексов, которые я бы использовал
a = [x/sum(x)*100 for x in [nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen]]
pd.DataFrame(a, index= my_names)
Нет, Вы не можете сделать этого. range()
ожидает целочисленные аргументы. Если Вы хотите знать, ли x
в этой попытке диапазона некоторая форма этого:
print 0.0 <= x <= 0.5
Быть осторожным с Вашим верхним пределом. Если Вы используете range()
, это исключено (range(0, 5)
, не включает 5!)
print 'yes' if 0 < x < 0.5 else 'no'
range()
для генерации массивов последовательных целых чисел
>>> s = 1.1
>>> 0<= s <=0.2
False
>>> 0<= s <=1.2
True
Чтобы проверить, является ли некоторый номер n в содержащем диапазоне, обозначенном двумя числами a и b, Вы делаете любой
if a <= n <= b:
print "yes"
else:
print "no"
, используют замену >=
и <=
с >
и <
, чтобы проверить, является ли n
в эксклюзивном диапазоне, обозначенном a
и b
(т.е. a
, и b
не самостоятельно члены диапазона).
Диапазон произведет арифметическую прогрессию, определенную двумя (или три) аргументы, преобразованные в целые числа. Посмотрите документация . Это не то, что Вы хотите, я предполагаю.
Старый верующий:
if n >= a and n <= b:
И это не похоже на Perl (шутка)
Я бы использовал библиотеку numpy, которая позволит вам сделать это и для списка чисел:
from numpy import array
a = array([1, 2, 3, 4, 5, 6,])
a[a < 2]