Python bisect.bisect_left() Examples
The following are 30
code examples of bisect.bisect_left().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
bisect
, or try the search function
.
Example #1
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def bisect_left(self, value): """Return an index to insert `value` in the sorted-key list. If the `value` is already present, the insertion point will be before (to the left of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedKeyList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_left(1) 4 :param value: insertion index of value in sorted-key list :return: index """ return self._bisect_key_left(self._key(value))
Example #2
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def bisect_right(self, value): """Return an index to insert `value` in the sorted-key list. Similar to `bisect_left`, but if `value` is already present, the insertion point with be after (to the right of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_right(1) 5 :param value: insertion index of value in sorted-key list :return: index """ return self._bisect_key_right(self._key(value))
Example #3
Source File: intranges.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def intranges_contain(int_, ranges): """Determine if `int_` falls into one of the ranges in `ranges`.""" tuple_ = _encode_range(int_, 0) pos = bisect.bisect_left(ranges, tuple_) # we could be immediately ahead of a tuple (start, end) # with start < int_ <= end if pos > 0: left, right = _decode_range(ranges[pos-1]) if left <= int_ < right: return True # or we could be immediately behind a tuple (int_, end) if pos < len(ranges): left, _ = _decode_range(ranges[pos]) if left == int_: return True return False
Example #4
Source File: recipe_api.py From recipes-py with Apache License 2.0 | 6 votes |
def find_longest_prefix(self, target, sep): """Identifies a known resource path which would contain the `target` path. sep must be the current path separator (can vary from os.path.sep when running under simulation). Returns (str(Path), Path) if the prefix path is found, or (None, None) if no such prefix exists. """ idx = bisect.bisect_left(self.path_strings, target) if idx == len(self.paths): return (None, None) # off the end sPath, path = self.path_strings[idx], self.paths[idx] if target == sPath : return sPath, path if idx > 0: sPath, path = self.path_strings[idx-1], self.paths[idx-1] if target.startswith(sPath+sep): return sPath, path return (None, None)
Example #5
Source File: SearchAlgorithm.py From Jtyoui with MIT License | 6 votes |
def binary_search(ls, x, sort=False): """二分查找算法 >>> s = [1, 2, 3, 4, 5, 6, 10, 7] >>> print(binary_search(s, 7, True)) :param ls: 列表。 :param x: 被查找的数。 :param sort: 是否要启动排序,False表示不启动排序,默认是不启动。 :return: 找到返回True,反之亦然 """ if sort: ls = sorted(ls) v = bisect.bisect_left(ls, x) if v != len(ls) and ls[v] == x: return True return False
Example #6
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def bisect_left(self, value): """Return an index to insert `value` in the sorted-key list. If the `value` is already present, the insertion point will be before (to the left of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedKeyList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_left(1) 4 :param value: insertion index of value in sorted-key list :return: index """ return self._bisect_key_left(self._key(value))
Example #7
Source File: intranges.py From core with MIT License | 6 votes |
def intranges_contain(int_, ranges): """Determine if `int_` falls into one of the ranges in `ranges`.""" tuple_ = _encode_range(int_, 0) pos = bisect.bisect_left(ranges, tuple_) # we could be immediately ahead of a tuple (start, end) # with start < int_ <= end if pos > 0: left, right = _decode_range(ranges[pos-1]) if left <= int_ < right: return True # or we could be immediately behind a tuple (int_, end) if pos < len(ranges): left, _ = _decode_range(ranges[pos]) if left == int_: return True return False
Example #8
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def bisect_right(self, value): """Return an index to insert `value` in the sorted-key list. Similar to `bisect_left`, but if `value` is already present, the insertion point with be after (to the right of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_right(1) 5 :param value: insertion index of value in sorted-key list :return: index """ return self._bisect_key_right(self._key(value))
Example #9
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def bisect_right(self, value): """Return an index to insert `value` in the sorted-key list. Similar to `bisect_left`, but if `value` is already present, the insertion point with be after (to the right of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_right(1) 5 :param value: insertion index of value in sorted-key list :return: index """ return self._bisect_key_right(self._key(value))
Example #10
Source File: sphere.py From sphere with MIT License | 6 votes |
def intersects(self, *args): if len(args) == 1 and isinstance(args[0], CellId): cell_id = args[0] index = bisect.bisect_left(self.__cell_ids, cell_id) if index != len(self.__cell_ids) \ and self.__cell_ids[index].range_min() <= cell_id.range_max(): return True return index != 0 \ and self.__cell_ids[index - 1].range_max() \ >= cell_id.range_min() elif len(args) == 1 and isinstance(args[0], CellUnion): cell_union = args[0] for cell_id in cell_union.__cell_ids: if self.intersects(cell_id): return True return False else: raise NotImplementedError()
Example #11
Source File: sphere.py From sphere with MIT License | 6 votes |
def contains(self, *args): if len(args) == 1 and isinstance(args[0], Cell): return self.contains(args[0].id()) elif len(args) == 1 and isinstance(args[0], CellId): cell_id = args[0] index = bisect.bisect_left(self.__cell_ids, cell_id) if index < len(self.__cell_ids) \ and self.__cell_ids[index].range_min() <= cell_id: return True return index != 0 \ and self.__cell_ids[index - 1].range_max() >= cell_id elif len(args) == 1 and isinstance(args[0], Point): return self.contains(CellId.from_point(args[0])) elif len(args) == 1 and isinstance(args[0], self.__class__): cell_union = args[0] for i in xrange(cell_union.num_cells()): if not self.contains(cell_union.cell_id(i)): return False return True else: raise NotImplementedError()
Example #12
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def bisect_left(self, value): """Return an index to insert `value` in the sorted-key list. If the `value` is already present, the insertion point will be before (to the left of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedKeyList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_left(1) 4 :param value: insertion index of value in sorted-key list :return: index """ return self._bisect_key_left(self._key(value))
Example #13
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def bisect_left(self, value): """Return an index to insert `value` in the sorted-key list. If the `value` is already present, the insertion point will be before (to the left of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedKeyList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_left(1) 4 :param value: insertion index of value in sorted-key list :return: index """ return self._bisect_key_left(self._key(value))
Example #14
Source File: intranges.py From gist-alfred with MIT License | 6 votes |
def intranges_contain(int_, ranges): """Determine if `int_` falls into one of the ranges in `ranges`.""" tuple_ = _encode_range(int_, 0) pos = bisect.bisect_left(ranges, tuple_) # we could be immediately ahead of a tuple (start, end) # with start < int_ <= end if pos > 0: left, right = _decode_range(ranges[pos-1]) if left <= int_ < right: return True # or we could be immediately behind a tuple (int_, end) if pos < len(ranges): left, _ = _decode_range(ranges[pos]) if left == int_: return True return False
Example #15
Source File: intranges.py From ServerlessCrawler-VancouverRealState with MIT License | 6 votes |
def intranges_contain(int_, ranges): """Determine if `int_` falls into one of the ranges in `ranges`.""" tuple_ = _encode_range(int_, 0) pos = bisect.bisect_left(ranges, tuple_) # we could be immediately ahead of a tuple (start, end) # with start < int_ <= end if pos > 0: left, right = _decode_range(ranges[pos-1]) if left <= int_ < right: return True # or we could be immediately behind a tuple (int_, end) if pos < len(ranges): left, _ = _decode_range(ranges[pos]) if left == int_: return True return False
Example #16
Source File: intranges.py From ServerlessCrawler-VancouverRealState with MIT License | 6 votes |
def intranges_contain(int_, ranges): """Determine if `int_` falls into one of the ranges in `ranges`.""" tuple_ = _encode_range(int_, 0) pos = bisect.bisect_left(ranges, tuple_) # we could be immediately ahead of a tuple (start, end) # with start < int_ <= end if pos > 0: left, right = _decode_range(ranges[pos-1]) if left <= int_ < right: return True # or we could be immediately behind a tuple (int_, end) if pos < len(ranges): left, _ = _decode_range(ranges[pos]) if left == int_: return True return False
Example #17
Source File: intranges.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def intranges_contain(int_, ranges): """Determine if `int_` falls into one of the ranges in `ranges`.""" tuple_ = _encode_range(int_, 0) pos = bisect.bisect_left(ranges, tuple_) # we could be immediately ahead of a tuple (start, end) # with start < int_ <= end if pos > 0: left, right = _decode_range(ranges[pos-1]) if left <= int_ < right: return True # or we could be immediately behind a tuple (int_, end) if pos < len(ranges): left, _ = _decode_range(ranges[pos]) if left == int_: return True return False
Example #18
Source File: py.py From recruit with Apache License 2.0 | 6 votes |
def keys(self, prefix=None): if prefix is None or prefix == "" or not self._keys: return set(self._keys) if prefix.startswith(self._cachestr): lo, hi = self._cachepoints start = i = bisect_left(self._keys, prefix, lo, hi) else: start = i = bisect_left(self._keys, prefix) keys = set() if start == len(self._keys): return keys while self._keys[i].startswith(prefix): keys.add(self._keys[i]) i += 1 self._cachestr = prefix self._cachepoints = (start, i) return keys
Example #19
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def bisect_key_left(self, key): """Return an index to insert `key` in the sorted-key list. If the `key` is already present, the insertion point will be before (to the left of) any existing keys. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> from operator import neg >>> skl = SortedKeyList([5, 4, 3, 2, 1], key=neg) >>> skl.bisect_key_left(-1) 4 :param key: insertion index of key in sorted-key list :return: index """ _maxes = self._maxes if not _maxes: return 0 pos = bisect_left(_maxes, key) if pos == len(_maxes): return self._len idx = bisect_left(self._keys[pos], key) return self._loc(pos, idx)
Example #20
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def bisect_right(self, value): """Return an index to insert `value` in the sorted list. Similar to `bisect_left`, but if `value` is already present, the insertion point with be after (to the right of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([10, 11, 12, 13, 14]) >>> sl.bisect_right(12) 3 :param value: insertion index of value in sorted list :return: index """ _maxes = self._maxes if not _maxes: return 0 pos = bisect_right(_maxes, value) if pos == len(_maxes): return self._len idx = bisect_right(self._lists[pos], value) return self._loc(pos, idx)
Example #21
Source File: core.py From ServerlessCrawler-VancouverRealState with MIT License | 5 votes |
def uts46_remap(domain, std3_rules=True, transitional=False): """Re-map the characters in the string according to UTS46 processing.""" from .uts46data import uts46data output = u"" try: for pos, char in enumerate(domain): code_point = ord(char) uts46row = uts46data[code_point if code_point < 256 else bisect.bisect_left(uts46data, (code_point, "Z")) - 1] status = uts46row[1] replacement = uts46row[2] if len(uts46row) == 3 else None if (status == "V" or (status == "D" and not transitional) or (status == "3" and std3_rules and replacement is None)): output += char elif replacement is not None and (status == "M" or (status == "3" and std3_rules) or (status == "D" and transitional)): output += replacement elif status != "I": raise IndexError() return unicodedata.normalize("NFC", output) except IndexError: raise InvalidCodepoint( "Codepoint {0} not allowed at position {1} in {2}".format( _unot(code_point), pos + 1, repr(domain)))
Example #22
Source File: core.py From ServerlessCrawler-VancouverRealState with MIT License | 5 votes |
def uts46_remap(domain, std3_rules=True, transitional=False): """Re-map the characters in the string according to UTS46 processing.""" from .uts46data import uts46data output = u"" try: for pos, char in enumerate(domain): code_point = ord(char) uts46row = uts46data[code_point if code_point < 256 else bisect.bisect_left(uts46data, (code_point, "Z")) - 1] status = uts46row[1] replacement = uts46row[2] if len(uts46row) == 3 else None if (status == "V" or (status == "D" and not transitional) or (status == "3" and std3_rules and replacement is None)): output += char elif replacement is not None and (status == "M" or (status == "3" and std3_rules) or (status == "D" and transitional)): output += replacement elif status != "I": raise IndexError() return unicodedata.normalize("NFC", output) except IndexError: raise InvalidCodepoint( "Codepoint {0} not allowed at position {1} in {2}".format( _unot(code_point), pos + 1, repr(domain)))
Example #23
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def bisect_left(self, value): """Return an index to insert `value` in the sorted list. If the `value` is already present, the insertion point will be before (to the left of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([10, 11, 12, 13, 14]) >>> sl.bisect_left(12) 2 :param value: insertion index of value in sorted list :return: index """ _maxes = self._maxes if not _maxes: return 0 pos = bisect_left(_maxes, value) if pos == len(_maxes): return self._len idx = bisect_left(self._lists[pos], value) return self._loc(pos, idx)
Example #24
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def remove(self, value): """Remove `value` from sorted list; `value` must be a member. If `value` is not a member, raise ValueError. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([1, 2, 3, 4, 5]) >>> sl.remove(5) >>> sl == [1, 2, 3, 4] True >>> sl.remove(0) Traceback (most recent call last): ... ValueError: 0 not in list :param value: `value` to remove from sorted list :raises ValueError: if `value` is not in sorted list """ _maxes = self._maxes if not _maxes: raise ValueError('{0!r} not in list'.format(value)) pos = bisect_left(_maxes, value) if pos == len(_maxes): raise ValueError('{0!r} not in list'.format(value)) _lists = self._lists idx = bisect_left(_lists[pos], value) if _lists[pos][idx] == value: self._delete(pos, idx) else: raise ValueError('{0!r} not in list'.format(value))
Example #25
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def discard(self, value): """Remove `value` from sorted list if it is a member. If `value` is not a member, do nothing. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([1, 2, 3, 4, 5]) >>> sl.discard(5) >>> sl.discard(0) >>> sl == [1, 2, 3, 4] True :param value: `value` to discard from sorted list """ _maxes = self._maxes if not _maxes: return pos = bisect_left(_maxes, value) if pos == len(_maxes): return _lists = self._lists idx = bisect_left(_lists[pos], value) if _lists[pos][idx] == value: self._delete(pos, idx)
Example #26
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def remove(self, value): """Remove `value` from sorted list; `value` must be a member. If `value` is not a member, raise ValueError. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([1, 2, 3, 4, 5]) >>> sl.remove(5) >>> sl == [1, 2, 3, 4] True >>> sl.remove(0) Traceback (most recent call last): ... ValueError: 0 not in list :param value: `value` to remove from sorted list :raises ValueError: if `value` is not in sorted list """ _maxes = self._maxes if not _maxes: raise ValueError('{0!r} not in list'.format(value)) pos = bisect_left(_maxes, value) if pos == len(_maxes): raise ValueError('{0!r} not in list'.format(value)) _lists = self._lists idx = bisect_left(_lists[pos], value) if _lists[pos][idx] == value: self._delete(pos, idx) else: raise ValueError('{0!r} not in list'.format(value))
Example #27
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def count(self, value): """Return number of occurrences of `value` in the sorted list. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([1, 2, 2, 3, 3, 3, 4, 4, 4, 4]) >>> sl.count(3) 3 :param value: value to count in sorted list :return: count """ _maxes = self._maxes if not _maxes: return 0 pos_left = bisect_left(_maxes, value) if pos_left == len(_maxes): return 0 _lists = self._lists idx_left = bisect_left(_lists[pos_left], value) pos_right = bisect_right(_maxes, value) if pos_right == len(_maxes): return self._len - self._loc(pos_left, idx_left) idx_right = bisect_right(_lists[pos_right], value) if pos_left == pos_right: return idx_right - idx_left right = self._loc(pos_right, idx_right) left = self._loc(pos_left, idx_left) return right - left
Example #28
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def bisect_right(self, value): """Return an index to insert `value` in the sorted list. Similar to `bisect_left`, but if `value` is already present, the insertion point with be after (to the right of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([10, 11, 12, 13, 14]) >>> sl.bisect_right(12) 3 :param value: insertion index of value in sorted list :return: index """ _maxes = self._maxes if not _maxes: return 0 pos = bisect_right(_maxes, value) if pos == len(_maxes): return self._len idx = bisect_right(self._lists[pos], value) return self._loc(pos, idx)
Example #29
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def bisect_left(self, value): """Return an index to insert `value` in the sorted list. If the `value` is already present, the insertion point will be before (to the left of) any existing values. Similar to the `bisect` module in the standard library. Runtime complexity: `O(log(n))` -- approximate. >>> sl = SortedList([10, 11, 12, 13, 14]) >>> sl.bisect_left(12) 2 :param value: insertion index of value in sorted list :return: index """ _maxes = self._maxes if not _maxes: return 0 pos = bisect_left(_maxes, value) if pos == len(_maxes): return self._len idx = bisect_left(self._lists[pos], value) return self._loc(pos, idx)
Example #30
Source File: sortedlist.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def __contains__(self, value): """Return true if `value` is an element of the sorted list. ``sl.__contains__(value)`` <==> ``value in sl`` Runtime complexity: `O(log(n))` >>> sl = SortedList([1, 2, 3, 4, 5]) >>> 3 in sl True :param value: search for value in sorted list :return: true if `value` in sorted list """ _maxes = self._maxes if not _maxes: return False pos = bisect_left(_maxes, value) if pos == len(_maxes): return False _lists = self._lists idx = bisect_left(_lists[pos], value) return _lists[pos][idx] == value