相关疑难解决方法(0)

Python List vs. Array - 何时使用?

如果要创建1d数组,可以将其实现为List,或者使用标准库中的"array"模块.我一直使用列表进行1d数组.

我想要使​​用阵列模块的原因或情况是什么?

它是用于性能和内存优化,还是我错过了一些明显的东西?

python arrays list

353
推荐指数
10
解决办法
30万
查看次数

如何实现set()?

我见过有人说setpython 中的对象有O(1)成员资格检查.它们如何在内部实施以实现这一目标?它使用什么样的数据结构?该实施还有哪些其他含义?

这里的每个答案都很有启发性,但我只能接受一个,所以我会用最接近我原来问题的答案.谢谢你的信息!

python cpython set data-structures

140
推荐指数
6
解决办法
5万
查看次数

将datetime列表与datetime的dict进行比较

我有一个任务是根据具体情况创建日期集,例如"大于2"将被传递,我需要在本月创建一组日期> 2的所有日期.我也是一个开始时间和停止时间,例如上午10点至下午6点,在这种情况下,我将创建一组所有日期> 2,并在每天有时间从上午10点开始,结束和下午6点,下面是一个例子:

greater > 2 less < 9 
start time :10am
stop time :6 pm
month:july
date1: 2016-07-03 10:00, 2016-07-03 16:00
date2: 2016-07-04 10:00, 2016-07-04 16:00
date3: 2016-07-05 10:00, 2016-07-05 16:00
.
.
.
date6: 2016-07-8 10:00, 2016-07-8 16:00
Run Code Online (Sandbox Code Playgroud)

我决定将这些日期存储到如下字典中:

dictD = {'dates_between_2_9':[[2016-07-03 10:00, 2016-07-03 16:00], [2016-07-04 10:00, 2016-07-04 16:00], ....., [2016-07-08 10:00, 2016-07-08 16:00]]} 
Run Code Online (Sandbox Code Playgroud)

我使用了dict,因为我将需要多个条件来为它们创建日期集,所以除了dates_between_2_5之外还会有另一个键.

另一方面,我根据条件得到另一个请求,以创建具有开始时间的日期,如下所示:

greater > 1 less than 12
start time : 2pm
    date1: 2016-07-02 14:00
    date2: 2016-07-03 14:00
    date3: 2016-07-04 14:00
    .
    .
    . …
Run Code Online (Sandbox Code Playgroud)

python datetime dictionary

14
推荐指数
2
解决办法
1114
查看次数

集合真的比列表快吗?

有人告诉我,在成员资格测试方面,Python 集合比列表更快。

尽管如此,timeit表明对于大量值列表实际上更快。

对于具有更多重复的较小集合,差异更小甚至相反,但是集合仍然没有显着优势(我猜性能问题对于非常大的数据集更为重要,不是吗?)

如何解释这些数据?

>>> import timeit
>>> # Few repetitions on a bigger set:
>>> timeit.timeit('10000 in set(range(10000000))', number=10)
9.265543753999737
>>> timeit.timeit('10000 in list(range(10000000))', number=10)
4.788996731000225
>>> # More repetitions on a smaller set:
>>> timeit.timeit('10000 in set(range(10000))', number=100000)
32.068307194000226
>>> timeit.timeit('10000 in list(range(10000))', number=100000)
32.45919990500079
Run Code Online (Sandbox Code Playgroud)

python performance

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

在 Python 中使用 set() 的内存有效方法

我正在研究在Python中对大量字符串进行重复数据删除的问题,并使用sets.Set()来解决这个问题。输入是文本文件中的一组字符串,输出是删除了重复项的同一组字符串。

该脚本需要能够在主内存有限(大约 2GB)的机器上运行,问题是集合的大小变得太大,我的输入是一个 800mb 的文本文件。

我的部分代码:

for String in InputFile:
    StringSet.add(String)

return StringSet
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来解决这个问题?我考虑过布隆过滤器和 trie,但我更喜欢 Set() 的 O(1) 效率。

编辑:我已经从sets.Set()切换到set(),后者应该具有更高的内存效率,但仍然不够高效。

python memory data-structures

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

Python:快速替换列表中特定单词的所有出现?

我有一个单词列表.它非常大(len(列表)~70,000).我目前正在使用此代码:

replacement = "bla"
for word in data:
    if (word in unique_words):
        word = replacement
Run Code Online (Sandbox Code Playgroud)

此代码需要一段时间才能执行操作.有更快的方法吗?

python

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