相关疑难解决方法(0)

如果列表中的其他理解

我有一个清单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不适合

我有一个test声明:

test = {'test1': 1, 'test2': 2, 'test3': 3}
Run Code Online (Sandbox Code Playgroud)

我想复制一份test过滤掉可能存在或不存在的特定密钥的副本。

我尝试了以下方法:

test_copy = {k: test[k] for k not in ('test3', 'test4')}
Run Code Online (Sandbox Code Playgroud)

但是Python似乎不喜欢 for not in循环。有什么办法可以很好地做到这一点吗?

我不认为此问题与if语句List理解的重复, 因为我专门为字典搜索了几分钟以上。

python for-loop

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

堆叠内联 For plus If else

我写了一行应该总结除 0 之外的字符串的所有数字。在零上它应该加上 5。

怎么了

s="123450"
o=sum([int(x) for x in s if int(x) != 0 else 5])
Run Code Online (Sandbox Code Playgroud)

它给出了语法错误,但是

s="123450"
o=sum([int(x) for x in s if int(x) != 0])
Run Code Online (Sandbox Code Playgroud)

工作正常。

python python-3.x

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

在一行 Python if-else 语句中传递语句

我想编写一个单行 if-else 语句,如果不满足第一个条件,则该语句不执行任何操作。这个问题与我想要实现的目标非常相似,但我希望我的代码pass在不满足条件时(不执行任何操作)。

换句话说:

# Some list
cols = ['firstname', 'middlename', 'lastname', 'dob', 'gender', 'salary']

# Filter elements in list
[col if 'name' in col else pass for col in cols]

# Expected output
> ['firstname', 'middlename', 'lastname']
Run Code Online (Sandbox Code Playgroud)

在阅读了另一篇文章中的评论后,我也尝试跳过该else声明:

[col if 'name' in col for col in cols]
> SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我想简化为一行的语法是:

my_list = []
for col in cols:
    if 'name' in col:
        my_list.append(col)
Run Code Online (Sandbox Code Playgroud)

上面的代码可以简化为一行吗?

python

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