我在网上查了一下,知道它的list.pop()时间复杂度为 O(1),但时间复杂度list.pop(i)为 O(n)。在我编写 leetcode 时,很多人pop(i)在 for 循环中使用,他们说它的时间复杂度为 O(n),实际上它比我的代码快,我的代码只使用一个循环,但该循环中有很多行。我想知道为什么会发生这种情况,我应该使用pop(i)而不是多行来避免它吗?
示例:Leetcode 26. 从排序数组中删除重复项
我的代码:(比 75% 快)
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
left, right = 0, 0
count = 1
while right < len(nums)-1:
if nums[right] == nums[right+1]:
right += 1
else:
nums[left+1]=nums[right+1]
left += 1
right += 1
count += 1
return count
Run Code Online (Sandbox Code Playgroud)
和其他人的代码,比 90% 快:(这家伙不说 O(n),但为什么 O(n^2) 比我的 O(n) 快?)
我的优化代码(比 89% 快)
class Solution(object): …Run Code Online (Sandbox Code Playgroud) 我尝试使用 python 来获取产品信息,如名称和价格。但这一次不起作用,即使我通过网络浏览器程序员模式检查html代码来获取类名并尝试使用这个名称来获取我想要的任何东西。
但我得到的结果是这样的,我找不到 的任何项目"class_="col-xs-2-4 shopee-search-item-result__item",我应该添加更多的标题信息吗?
打印结果
import requests
import re
import pandas as pd
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import json
url = 'https://shopee.tw/shop/1819984/search?shopCollection=9271157'
headers = {
'Host': 'shopee.tw',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0',
'Cookie':'SPC_IA=-1; SPC_EC=-; SPC_F=L07IMDECRHjifEKyg7XuNCJ00GNdJGTA; REC_T_ID=246cfcdc-18fa-11ea-b254-f8f21e2be0b8; SPC_T_ID="Fyr1skVDq7FDiJOuTYHBmMfMr2Cw1eZyPbYJhBYoRmf/gvfvkOf5zgjIVXLrYYlg32aSx1PfmhWq7QsQzwM86mdeXG8VU7ERK4N+gfPFd14="; SPC_U=-; SPC_T_IV="/oJN8EB7iQwg7+n5mXd6cw=="; _gcl_au=1.1.788704691.1575727322; _fbp=fb.1.1575727322914.443117835; _ga=GA1.2.1422761069.1575727324; __BWfp=c1575727332595xf5a099d8b; cto_lwid=7ea874b3-f31f-47d7-aef9-60eed0156d33; cto_bundle=0tgQ7V9rU3JlRTU4aWlTc09JNXRaN014Y3ZXa1BtVVcwT2RhOU1UZ0tweUFvWUo2WHRPQjd0JTJCM1duaG5iWXFFRWxpbHZkTFluWUZLSEFudTFreGJueFoxU0EyanhnMWN6ZEVIUVV6cFlhd050emhFMWQ4bmhVelZwVSUyRmwwQUp5c29lOEhPT2ZobE10S1dvT09HYWNhVXV1YWx5R3dSOGw0MHcwZWpiZ2pXU2VHSzdrJTNE; _med=refer; G_ENABLED_IDPS=google; fbm_382498665271383=base_domain=.shopee.tw; SPC_SI=jq6hwq6ju6hig9hfulumcagdqaiopatc; _gid=GA1.2.143857303.1577796150; csrftoken=3Pya3o5WYEvhLOj9FqCqbV3angfwBlko; AMP_TOKEN=%24NOT_FOUND; _dc_gtm_UA-61915057-6=1'
}
r = requests.get(url,headers=headers,allow_redirects=True)
print(r.status_code)
print(r.history)
print(r.url)
soup = …Run Code Online (Sandbox Code Playgroud) 我有以下数据框
NDQ CFRI NFFV [more columns....]
2002-01-24 92.11310000 57.78140000 90.95720000
2002-01-25 57.97080000 91.05430000 58.19820000
Run Code Online (Sandbox Code Playgroud)
我想将列中的所有值设置为等于相应列的最大值。
期望的输出:
NDQ CFRI NFFV [more columns....]
2002-01-24 92.11310000 91.05430000 90.95720000
2002-01-25 92.11310000 91.05430000 90.95720000
Run Code Online (Sandbox Code Playgroud)
我试图将其映射到 的结果df.max(),但在实施方面遇到了困难,并且觉得会有更简单的解决方案可用。
任何帮助将不胜感激。
我想计算点的导数,一些建议使用 np.diff 函数的互联网帖子。但是,我尝试将 np.diff 用于手动计算的结果(选择一个随机多项式方程并对其进行微分),以查看是否最终得到相同的结果。我使用了以下等式:Y = (X^3) + (X^2) + 7 最终得到的结果是不同的。任何想法为什么?有没有其他方法来计算差异。
在这个问题中,我试图解决,我收到了拟合样条函数的数据点(不是需要用样条拟合的原始数据,而是已经拟合的样条的点)。x 值的间隔相等。我只有点没有方程,我需要的是计算一阶、二阶和三阶导数。即 dy/dx、d2y/dx2、d3y/dx3。关于如何做到这一点的任何想法?提前致谢。
xval = [1,2,3,4,5]
yval = []
yval_dashList = []
#selected a polynomial equation
def calc_Y(X):
Y = (X**3) + (X**2) + 7
return(Y)
#calculate y values using equatuion
for i in xval:
yval.append(calc_Y(i))
#output: yval = [9,19,43,87,157]
#manually differentiated the equation or use sympy library (sym.diff(x**3 + x**2 + 7))
def calc_diffY(X):
yval_dash = 3*(X**2) + 2**X
#store differentiated y-values in a list
for i …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行以下矢量化 if-else 的等效操作,但找不到任何适用于 dask 的内容。(dask.array.where总是返回NotImplemented)
实现这一目标的最佳方法是什么?
np.where(df['columne'] > 0, 0, 1)
我有这个数据。
我将它解析为 JSON,不久前它对我有用
json_data = json.loads(data)
print(json_data['plp']['plp_products']) #OK
Run Code Online (Sandbox Code Playgroud)
但现在我有这个错误:"TypeError: string indices must be integers".
如果我打印 json_data 的“类型”,会给我一个 str :
<class 'str'>
我如何转换该数据以再次将其用作 JSON?我特别需要使用节点json_data['plp']['plp_products']
谢谢
在一个目录images 中,图像被命名为 - 1_foo.png、2_foo.png、14_foo.png等。
图像经过 OCR 处理,文本提取物dict通过以下代码存储在 a中 -
data_dict = {}
for i in os.listdir(images):
if str(i[1]) != '_':
k = str(i[:2]) # Get first two characters of image name and use as 'key'
else:
k = str(i[:1]) # Get first character of image name and use 'key'
# Intiates a list for each key and allows storing multiple entries
data_dict.setdefault(k, [])
data_dict[k].append(pytesseract.image_to_string(i))
Run Code Online (Sandbox Code Playgroud)
代码按预期执行。
图像的名称中可以有不同的数字,范围从 1 到 99。
这可以简化为dictionary …
python ×7
algorithm ×1
dask ×1
dataframe ×1
dictionary ×1
json ×1
numpy ×1
pandas ×1
scipy ×1
web-crawler ×1