rob*_*ams 2 python list-comprehension python-2.7 python-3.x
是否可以为以下 python 代码编写列表推导式:
for str in range(0,len(mixed_content)):
if (mixed_content[str].isdigit()):
num_list.append(mixed_content[str])
else:
string_list.append(mixed_content[str])
Run Code Online (Sandbox Code Playgroud)
我们可以在列表推导式中使用 else 块吗?我尝试为上述代码编写列表推导式:
num_list , string_list = [ mixed_content[str] for str in range(0,len(mixed_content)) if(mixed_content[str].isdigit()) else ]
Run Code Online (Sandbox Code Playgroud)
这是不可能的,但是如果您正在寻找单行代码,您可以在循环中使用三元表达式来实现(保存测试并且紧凑):
num_list=[]
string_list=[]
for s in ["45","hello","56","foo"]:
(num_list if s.isdigit() else string_list).append(s)
print(num_list,string_list)
Run Code Online (Sandbox Code Playgroud)
结果:
['45', '56'] ['hello', 'foo']
Run Code Online (Sandbox Code Playgroud)
笔记:
(num_list if s.isdigit() else string_list)它不是一个生成器,一个三元表达式(在括号之间保护以对抗.append优先级),num_list如果 s 是(正)数字序列,string_list否则返回s。isdigits将返回 false。你必须为此编写一个特殊的函数(SO上的经典问题)| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |