Sıralanmış bir liste ve rasgele bir değer olması, değerin hangi aralıkta olduğunu bulmak istiyorum. [0, 5, 10, 15, 20] Ve değerdir, 8.Bir değer bir listede iki değer arasında olup olmadığını bulmak için bir pythonic yolu
standart yolu olmak ya biz daha büyük değere çarpana kadar baştan giderdim ki:
Liste böyle gider bizimki (aşağıdaki örnekte olduğu gibi) veya binary search'u gerçekleştirin. Bu kısa olmasına rağmen göz yara biraz görünüyor gibi daha pythonic yaklaşım varsa
grid = [0, 5, 10, 15, 20]
value = 8
result_index = 0
while result_index < len(grid) and grid[result_index] < value:
result_index += 1
print result_index
merak ediyorum. Zaman ayırdığınız için teşekkür ederiz!
+1
bisect — Array bisection algorithm, on saniye tarafından kendisine beni yendi. Gerçi stdlib dokümanlar ile bağlantı kurmaya değecek. – Kiv
Sanırım arama yapmak için doğru şartları bulamadım! Çok teşekkür ederim, tam da aradığım şey bu! –
Ey, başka bir WET dili! :) python'un (Java gibi katı bir sistemden muzdarip olsa bile) herşeyi iki kere yazmaya zorladığını görmek çok eğlenceli. – akuhn