小编iz_*_*iz_的帖子

为什么按位运算符比乘法/除法/模数慢?

众所周知,乘法,整数除法和2的幂的模可以作为按位运算更有效地重写:

>>> x = randint(50000, 100000)
>>> x << 2 == x * 4
True
>>> x >> 2 == x // 4
True
>>> x & 3 == x % 4
True
Run Code Online (Sandbox Code Playgroud)

在诸如C/C++和Java等编译语言中,测试表明按位运算通常比算术运算更快.(见这里这里).但是,当我在Python中测试这些时,我得到了相反的结果:

In [1]: from random import randint
   ...: nums = [randint(0, 1000000) for _ in range(100000)]

In [2]: %timeit [i * 8 for i in nums]
7.73 ms ± 397 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) …
Run Code Online (Sandbox Code Playgroud)

python optimization bitwise-operators micro-optimization

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

如何在迭代器上高效地进行“n 向”迭代

可能是重复的,但我找不到任何东西。

\n\n

我有一个很长的迭代器(10000 个项目),我需要一次迭代约 500 个项目。所以如果我的迭代器是range(10000),它看起来像这样:

\n\n
Iteration #1: 0, 1, 2, ... 497, 498, 499\nIteration #2: 1, 2, 3, ... 498, 499, 500\nIteration #3: 2, 3, 4, ... 499, 500, 501\nIteration #4: 3, 4, 5, ... 500, 501, 502\n...\nIteration #9500: 9499, 9500, 9501 ... 9996, 9997, 9998\nIteration #9501: 9500, 9501, 9502 ... 9997, 9998, 9999\n
Run Code Online (Sandbox Code Playgroud)\n\n

等等。有这样一个方法:

\n\n
def nwise_slice(lst, n):\n    for i in range(len(lst) - n + 1):\n        yield lst[i:i + n]\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,这不适用于惰性迭代器。我尝试使用迭代器创建一个解决方案,并根据itertools pairwise …

python iterator list python-itertools python-3.x

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

如何找到两个列表之间的不同组合?

有两个列表.list_1 = [a1,b1,c1,d1] list_2 = [a2,b2,c2,d2]

条件是(i)每个组合中必须有四个元素和(ii)组合应包含a的一个元素(即a1或a2),b的一个元素(即b1或b2),c的一个元素(即c1或c2)和d的一个元素(即d1或d2).

请帮助我使用python 3x找出不同的组合.

python combinations python-3.x

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

编写一长行代码的 Pythonic 方式

count_lbl = pd.DataFrame(labels_dataframe.sum(axis=1) \
    .sort_values(ascending=False)) \
    .reset_index() \
    .groupby(0).count() \
    .reset_index() \
    .rename(columns={0:'num_lbl','index':'count'})
Run Code Online (Sandbox Code Playgroud)

我对 Python 相当陌生,我想知道这是否是编写长代码行的最佳方式,对一个对象进行多个顺序操作。

python

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

在python中可以写下单条if条件吗?

如果使用Python 3.7中的条件,如何仅使用单个if条件而不是两个来重写下面的代码?

with open('demo.csv', 'r') as f, open("Result_csv.csv", 'w+') as out:
    for line in f:
        if '/tcp' in line:
            print(line)
            out.write(line)
        if '/udp' in line:
            print(line)
            out.write(line)
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-requests

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