我有一个清单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在列表理解这样吗?
我有一个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循环。有什么办法可以很好地做到这一点吗?
我写了一行应该总结除 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)
工作正常。
我想编写一个单行 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)
上面的代码可以简化为一行吗?