buckets = [0] * longest # this will make a list of longest size
Затем создайте список в каждом элементе, и я использую первый элемент списка, чтобы вести подсчет этого сегмента.
for i in range(longest):
buckets[i] = [0]
Затем вам нужно добавить слова в ведра.
for L in words:
buckets[len(L)][0] += 1 # increasing the count of that bucket
buckets[len(L)].append(L) # Adding the word to that bucket
Вот пример:
longest = 10
words = ['this', 'that', 'foremost']
buckets = [0] * longest # this will make a list of longest size
for i in range(longest):
buckets[i] = [0]
for L in words:
buckets[len(L)][0] += 1 # increasing the count of that bucket
buckets[len(L)].append(L) # Adding the word to that bucket
Чтобы получить доступ к любому из подсчетов, это просто buckets[number][0]
и для доступа ко всем словам, вы цикл, начинающийся с buckets[number][1]
.
if isMinLevel: return values.index(min(values)) else: return values.index(max(values))
Что относительно этого:
a=[1,55,2,36,35,34,98,0]
max_index=dict(zip(a,range(len(a))))[max(a)]
Это создает словарь из объектов в a
как ключи и их индексы, поскольку значения, таким образом dict(zip(a,range(len(a))))[max(a)]
возвращает значение, которое соответствует ключу max(a)
, который является индексом максимума в a. Я - новичок в Python, таким образом, я не знаю о вычислительной сложности этого решения.
Вы можете найти минимальный / максимальный индекс и значение одновременно, если вы перечисляете элементы в списке, но выполняете минимальное / максимальное значение для исходных значений списка. Примерно так:
import operator
min_index, min_value = min(enumerate(values), key=operator.itemgetter(1))
max_index, max_value = max(enumerate(values), key=operator.itemgetter(1))
Таким образом, список будет просматриваться только один раз для min (или max).