python - 翻转列表中的条目而不循环

标签 python bit-manipulation

在 Python 中,我有一个零和一的列表(可能很长),例如,

L = [0,1,0,1,1,0,1,0,0,1]

我想在不使用循环的情况下翻转列表中的每个条目,例如,将 0 变为 1,将 1 变为 0。

我的想法是这样的:这个 L 可以看作是一个实数的二进制表示。所以我希望让L变成0101101001,然后我想有一些位操作可以直接做翻转工作。最后,我需要将翻转后的术语返回列表,即 1010010110[1,0,1,0,0,1,0,1,1,0]

有没有办法在 Python 中实现这个想法(不使用 numpy)?这种方法会比循环快得多吗?这种方法会是实现这一目标的最快方式吗?

这是一道面试题。我无法在现场回答。我不允许使用像 numpy 这样的库。

最佳答案

您可以使用 lambda 和 map 来实现:

l = [0, 1, 0, 1]
f = list(map(lambda x: int(not x), l))
print(f) # prints [1, 0, 1, 0]

关于python - 翻转列表中的条目而不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38042513/

相关文章:

python - Anaconda 安装后,conda 命令失败并显示 "ImportError: no module named conda.cli"

python - PyQt - 使用 QLineEdit 多次自动完成器

c++ - 定义 BIT0、BIT1、BIT2 等而不使用#define

php - 对可变位宽二进制 block 中的十进制值进行编码/解码

c - C中的按位索引?

python - 如何计算tokoneized数据框中的匹配项

python - 防止 OpenCV 函数 CreateVideoWriter 在 Python 中打印到控制台

python - 完美数列表器

c - (x | y) - y 为什么不能简单地是 x 甚至 `x | 0`

c++ - 使用位掩码重构整数