相关疑难解决方法(0)

if/else在Python的列表理解中?

如何在Python中执行以下操作?

row = [unicode(x.strip()) for x in row if x is not None else '']
Run Code Online (Sandbox Code Playgroud)

实质上:

  1. 用空字符串替换所有Nones,然后
  2. 执行功能.

python list-comprehension

791
推荐指数
8
解决办法
65万
查看次数

如果列表中的其他理解

我有一个清单l:

l = [22, 13, 45, 50, 98, 69, 43, 44, 1]
Run Code Online (Sandbox Code Playgroud)

对于45以上的数字,我想加1; 对于小于它的数字,5.

我试过了

[x+1 for x in l if x >= 45 else x+5]
Run Code Online (Sandbox Code Playgroud)

但它给了我一个语法错误.我怎样才能实现if- else在列表理解这样吗?

python if-statement list-comprehension list

398
推荐指数
8
解决办法
46万
查看次数

为什么Python中没有元组理解?

众所周知,有列表理解,比如

[i for i in [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)

并且有字典理解,比如

{i:j for i, j in {1: 'a', 2: 'b'}.items()}
Run Code Online (Sandbox Code Playgroud)

(i for i in (1, 2, 3))
Run Code Online (Sandbox Code Playgroud)

将最终成为一个发电机,而不是tuple理解.这是为什么?

我的猜测是a tuple是不可变的,但这似乎不是答案.

python tuples list-comprehension dictionary-comprehension set-comprehension

289
推荐指数
7
解决办法
9万
查看次数

单行列表理解:if-else变体

它更多的是关于python列表理解语法.我有一个列表理解,可以生成给定范围的奇数列表:

[x for x in range(1, 10) if x % 2]
Run Code Online (Sandbox Code Playgroud)

这是一个过滤器 - 我有一个源列表,我删除偶数(if x % 2).我想在这里使用if-then-else之类的东西.以下代码失败:

>>> [x for x in range(1, 10) if x % 2 else x * 100]
  File "<stdin>", line 1
    [x for x in range(1, 10) if x % 2 else x * 100]
                                         ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

有一个像if-else的python表达式:

1 if 0 is 0 else 3
Run Code Online (Sandbox Code Playgroud)

如何在列表理解中使用它?

python list-comprehension ternary-operator conditional-operator

150
推荐指数
4
解决办法
25万
查看次数

单个下划线"_"是Python中的内置变量吗?

我不明白这个单一的下划线意味着什么.这是一个神奇的变量吗?我无法在locals()和globals()中看到它.

>>> 'abc'
'abc'
>>> len(_)
3
>>> 
Run Code Online (Sandbox Code Playgroud)

python

34
推荐指数
2
解决办法
4999
查看次数

(Python) 根据属性将字典一分为二

我想根据主字典中的属性中是否存在任何字符串数组将字典分成两部分。目前,我可以通过两个单独的字典理解(如下)来实现此目的,但是是否有一种更有效的方法可以仅通过一行/字典理解来实现此目的?

included = {k:v for k,v in users.items() if not any(x.lower() in v["name"].lower() for x in EXCLUDED_USERS)}
excluded = {k:v for k,v in users.items() if any(x.lower() in v["name"].lower() for x in EXCLUDED_USERS)}
Run Code Online (Sandbox Code Playgroud)

编辑

EXCLUDED_USERS包含模式列表。

python dictionary

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

列表推导中的'else'语句

我有一个变量,可以是一个字符串或一个元组(我不提前知道),我需要使用它作为列表.

基本上,我想将以下内容转换为列表理解.

variable = 'id'
final = []
if isinstance(variable, str):
    final.append(variable)
elif isinstance(variable, tuple):
    final = list(variable)
Run Code Online (Sandbox Code Playgroud)

我正在思考以下几行(这给我一个语法错误).

final = [var for var in variable if isinstance(variable, tuple) else variable]
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个问题,但它不一样,因为提问者可以for在最后使用循环; 我的仅适用于它是一个元组.

注:我想列表理解,如果我用工作isinstance(variable, list)还有tuple一个.

python list-comprehension

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