我需要在Python的切片表示法上有一个很好的解释(引用是一个加号).
对我来说,这种符号需要一点点提升.
它看起来非常强大,但我还没有完全了解它.
所以我想创建一个列表,它是一些现有列表的子列表.
例如,
L = [1, 2, 3, 4, 5, 6, 7],我想创建一个子列表li,li包含L奇数位置的所有元素.
虽然我可以做到
L = [1, 2, 3, 4, 5, 6, 7]
li = []
count = 0
for i in L:
if count % 2 == 1:
li.append(i)
count += 1
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有其他方法可以有效地以较少的步骤进行相同的操作.
从技术上讲,根据我在这里读到的帖子,哈希表在最坏的情况下确实是O(n)时间查找.但我不知道内部机制如何保证它平均为O(1)时间.
我的理解是,给定n个元素,理想情况是有n个桶,这导致O(1)空间.这就是我被困住的地方.假设我想查找一个键是否在字典中,这肯定需要O(n)时间.那么,当我想通过使用其键的哈希值来搜索元素是否在哈希表中时,为什么会有所不同呢?简而言之,使用原始键值进行搜索会得到O(n)时间,但使用哈希值时会得到O(1)时间.这是为什么?
难道我还不需要逐个查找哈希值来查看哪一个匹配?为什么哈希让我立即知道要检索哪个元素或者是否存在这样的元素?