小编jak*_*e77的帖子

python使用isinstance比较boolean和int

有人可以给我一个解释,为什么isinstance()在下列情况下返回True?编写代码时,我期待False.

print isinstance(True, (float, int))
True
Run Code Online (Sandbox Code Playgroud)

我的猜测是它的python的内部子类,如0和1 - wheter float或int - 在用作布尔值时都会计算,但不知道确切的原因.

什么是解决这种情况的最pythonic方式?我可以使用,type()但在大多数情况下,这被认为是较少pythonic.

python int comparison boolean isinstance

28
推荐指数
4
解决办法
1万
查看次数

python - 迭代字典列表和解包

给出一个简单的词典列表

lst = [{'key1': 1}, {'key2': 2}, {'key3': 3}]
Run Code Online (Sandbox Code Playgroud)

我想找到一个dict,它产生使用此处未详述的方法评估的最小值.我的第一个想法是迭代列表以通过dict检查dict,但是这失败了:

for k, v in [x.items() for x in lst]:
    print(k, v)
Run Code Online (Sandbox Code Playgroud)

结果ValueError(以及使用生成器而不是列表):

for k, v in [x.items() for x in lst]:
ValueError: not enough values to unpack (expected 2, got 1)
Run Code Online (Sandbox Code Playgroud)

然而,

for x in lst:
    for k, v in x.items():
        print(k, v)
Run Code Online (Sandbox Code Playgroud)

产量

key1 1
key2 2
key3 3
Run Code Online (Sandbox Code Playgroud)

正如所料.我假设所有方法都按预期工作(除非PEBKAC),但为什么它不能使用列表理解?有人可以开导我吗?

编辑:我使用python 3,我知道items()产生一个dict_view,但我不明白为什么逻辑不起作用.

python list-comprehension argument-unpacking python-3.x

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

在Rust中强调:“考虑使用”

在这里生锈新手。当提供参数并将其在函数声明中保持未使用状态时(例如,在学习Rust ...时),编译器会警告变量在范围内未使用的事实,并建议考虑在其下划线。这样做,警告消失。

warning: unused variable: `y`
--> src/main.rs:23:29
   |
23 | fn another_function(x: i32, y: i32) {
   |                             ^ help: consider using `_y` instead
   |
   = note: #[warn(unused_variables)] on by default
Run Code Online (Sandbox Code Playgroud)

为什么?变量如何区别对待?

rust

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