私信  •  关注

DeepSpace

DeepSpace 最近创建的主题
DeepSpace 最近回复了
2 年前
回复了 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

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

2 年前
回复了 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是动态类型语言。如果要(以某种方式)支持重载,则重载规则将过于复杂。

5 年前
回复了 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})
5 年前
回复了 DeepSpace 创建的主题 » 是否将python“time”对象返回前端?

使用 .isoformat datetime 对象。

5 年前
回复了 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

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

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

从其 docs :

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

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

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