假设我们有一个巨大的整数排序列表。使用不在列表中的上限来切片此列表的最快方法是什么?
例如,假设我们的列表是:
l=list(range(0,1000000, 2))
Run Code Online (Sandbox Code Playgroud)
(这是一个简单的例子,列表可以是任意长度的,没有特定的间隔,所以它不能与某个范围相关)
我们想要得到一个切片,其中的项目小于 limit=1001
实现这一目标的最快方法是什么,理想情况下不检查列表中的所有项目?一种常见的方法是使用列表推导式,例如[i for i in l if i<limit]
,但这样我们必须检查 l 的所有项目并将它们与限制进行比较。如果限制在列表中,我们可以使用类似的东西,l[:l.index(limit)]
但如果它不在列表中呢?任何的想法?
我有一个字典,由列表中的整数形式的键和值组成,例如,
input: {
'example_key1': [358, 57, 18602, 18388],
'example_key2': [415, 12, 4800, 2013],
'example_key3': [450, 10, 4500, 4500],
}
Run Code Online (Sandbox Code Playgroud)
我希望将最后一个值与列表中每个键的倒数第二个值相除,将答案乘以 100,然后将答案输入到类似的字典中,ndigit = 1 分。
output: {
'example_key1': [98.8], # [round((((18388 / 18602)) * 100), 1)]
'example_key2': [41.9], # [round((((2103 / 4800)) * 100), 1)]
'example_key3': [100.0], # [round((((4500 / 4500)) * 100), 1)]
}
Run Code Online (Sandbox Code Playgroud) 我有这个数据框:
df = pd.DataFrame([{ "state": "CA", "total":2, "week": 10 },{ "state": "UT", "total": 7, "week": 10 },{ "state": "CA", "total": 14, "week": 11 },{ "state": "UT", "total":18, "week": 11 },{ "state": "CA", "total": 21, "week": 12 },{ "state": "UT", "total": 30, "week": 12 }])
Run Code Online (Sandbox Code Playgroud)
该total
字段是累积的,我想按周获取差异。所以我想以这样的方式结束:
state,total,week,diff
CA,2,10,NaN
UT,7,10,NaN
CA,14,11,12
UT,18,11,11
CA,21,12,7
UT,30,12,12
Run Code Online (Sandbox Code Playgroud)
我如何从这里到达那里?我可以通过遍历行来做到这一点,但我不知道从哪里开始在熊猫中做到这一点。