小编lok*_*oki的帖子

Python list.pop(i) 时间复杂度?

我在网上查了一下,知道它的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) 快?)

https://leetcode.com/problems/remove-duplicates-from-sorted-array/discuss/477370/python-3%3A-straight-forward-6-lines-solution-90-faster-100-less-memory

我的优化代码(比 89% 快)

class Solution(object): …
Run Code Online (Sandbox Code Playgroud)

python algorithm time-complexity

5
推荐指数
1
解决办法
290
查看次数

如何从shopee网站抓取商品?

我尝试使用 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)

python beautifulsoup web-crawler

4
推荐指数
1
解决办法
1万
查看次数

Pandas:用列最大值替换列中的所有值

我有以下数据框

            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(),但在实施方面遇到了困难,并且觉得会有更简单的解决方案可用。

任何帮助将不胜感激。

python dataframe pandas

3
推荐指数
1
解决办法
704
查看次数

计算python中点的导数

我想计算点的导数,一些建议使用 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)

python numpy scipy

3
推荐指数
2
解决办法
1893
查看次数

numpy where 的 dask 等价物是什么?

我正在尝试执行以下矢量化 if-else 的等效操作,但找不到任何适用于 dask 的内容。(dask.array.where总是返回NotImplemented

实现这一目标的最佳方法是什么?

np.where(df['columne'] > 0, 0, 1)

python dask

1
推荐指数
1
解决办法
1308
查看次数

Python json.loads 返回字符串

我有这个数据

我将它解析为 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']

谢谢

python json

0
推荐指数
1
解决办法
245
查看次数

将代码简化为字典理解

在一个目录images 中,图像被命名为 - 1_foo.png2_foo.png14_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 dictionary dictionary-comprehension

0
推荐指数
1
解决办法
72
查看次数