社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DeepSpace  »  全部回复
回复总数  7
3 年前
回复了 DeepSpace 创建的主题 » 基于索引更新Python列表的最快方法

使用循环

for index in flag_list:
    my_dict['Attendance'][index] = True

微观优化是只从dict中获取列表一次:

attendance_list = my_dict['Attendance']
for index in flag_list:
    attendance_list[index] = True

但除非 flag_list 有几千个元素,我不担心。

使用矢量化

如果你愿意利用矢量化,你可以使用 numpy 数组:

import numpy as np

my_dict = {'Names':['Tom', 'Mariam', 'Lata', 'Tina', 'Abin'],
           'Attendance': np.array([False, False, False, False, False])}
flag_list = [0, 2, 3]
my_dict['Attendance'][flag_list] = True

但同样,除非你的数据 非常 我不太担心优化这段代码。

示例时间

import random

from timeit import Timer

import numpy as np


ATTENDANCE_LIST_SIZE = 100000
FLAG_LIST_SIZE = 60000

dict_with_numpy = {'Attendance': np.random.choice([False, True], 
                                 ATTENDANCE_LIST_SIZE)}
dict_without_numpy = {'Attendance': random.choices([False, True], 
                                    k=ATTENDANCE_LIST_SIZE)}
flag_list = random.choices(range(ATTENDANCE_LIST_SIZE), k=FLAG_LIST_SIZE)


def using_numpy():
    dict_with_numpy['Attendance'][flag_list] = True


def no_numpy_pre_fetching_list():
    attendance_list = dict_without_numpy['Attendance']
    for index in flag_list:
        attendance_list[index] = True


def no_numpy():
    for index in flag_list:
        dict_without_numpy['Attendance'][index] = True


print(f'no_numpy\t\t\t\t\t\t{min(Timer(no_numpy).repeat(3, 3))}')
print(f'no_numpy_pre_fetching_list\t\t{min(Timer(no_numpy_pre_fetching_list).repeat(3, 3))}')
print(f'using_numpy\t\t\t\t\t\t{min(Timer(using_numpy).repeat(3, 3))}')

对于这个数量的数据,输出是(在我的机器上)

no_numpy                        0.009737916999999985
no_numpy_pre_fetching_list      0.0048406370000000365
using_numpy                     0.009164470000000036

所以使用矢量化 对于这些数据 效率最高。

3 年前
回复了 DeepSpace 创建的主题 » 有人看到这个表达式来获取python中的数据吗?

由于元组是可散列的,所以它们可以用作dict键。其中包括空元组:

d = {
    (): 'a'
}

print(d[()])

这将产生:

a

python不支持方法重载。实际方法将是最后定义的方法。

class A:
    def foo(self, arg_one): pass

    def foo(self, arg_one, arg_two): pass

A().foo('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() missing 1 required positional argument: 'arg_two'

这主要是因为python是动态类型语言。如果要(以某种方式)支持重载,则重载规则将过于复杂。

6 年前
回复了 DeepSpace 创建的主题 » python3:从json格式将相等元素添加到一起

你可以使用 defaultdict . 下面的代码遍历dict列表。然后取出一个随机的键值对,直到每个dict都是空的并对结果求和。

from collections import defaultdict

data = [{'Ferrari': 51078},
        {'Volvo': 83245, 'Ferrari': 70432, 'Skoda': 29264, 'Lambo': 862},
        {'Ferrari': 306415, 'Jeep': 4025, 'Saab': 2708, 'Lexus': 161},
        {'Fiat': 27583, 'Maserati': 11030, 'Renault': 3194, 'Volvo': 259, 'Skoda': 164},
        {'Ferrari': 2313172, 'Renault': 2475},
        {'Volvo': 198671},
        {'Volvo': 15762}]

output = defaultdict(int)

for d in data:
    while d:
        k, v = d.popitem()
        output[k] += v

print(output)

输出

defaultdict(<class 'int'>, {'Ferrari': 2741097,
                            'Lambo': 862,
                            'Skoda': 29428,
                            'Volvo': 297937,
                            'Lexus': 161,
                            'Saab': 2708,
                            'Jeep': 4025,
                            'Renault': 5669,
                            'Maserati': 11030,
                            'Fiat': 27583})
6 年前
回复了 DeepSpace 创建的主题 » 是否将python“time”对象返回前端?

使用 .isoformat datetime 对象。

6 年前
回复了 DeepSpace 创建的主题 » 捕获python中的特定错误

type(e) 不返回字符串。注意

(<class 'django.contrib.auth.models.User.DoesNotExist'> != 
 'django.contrib.auth.models.User.DoesNotExist')

这个 if 条件应该是 if type(e) == django.contrib.auth.models.User.DoesNotExist 或者更好, if isinstance(e, django.contrib.auth.models.User.DoesNotExist)

但是,正确的解决方案是使用多个 except 条款

username = 'myuser'
try:
    user = User.objects.get(username=username)
    print(user)
except User.DoesNotExist:
    # do something
    print('No such user')
except SomeOtherException:
    # do a different thing
except Foo:
    # do bar

请注意,您还可以将不同异常类型的处理组合到相同的 除了 条款:

try:
    # some bad code
except (User.DoesnotExist, SomeOtherException):
    # error handling code


参考
1。 Python: One Try Multiple Except

6 年前
回复了 DeepSpace 创建的主题 » pandas describe()函数不在pycharm上打印任何内容

独自一人, describe 不打印任何内容。它 收益率 数据文件。

从其 docs :

退换商品 :摘要:摘要统计的系列/数据框架

与Pycharm不同,您使用的笔记本是有线的,可以自动打印语句的返回值。

变化 cities.describe() print(cities.describe()) .