已知一个列表[1,2,3,4,5,6]
要求能被三整除的保留不能被3整除的则乘以2.
结果[2,4,3,8,10,6]
使用列表解析完成。
list1=[1,2,3,4,5,6]
a=[i if i%3==0 else i*2 for i in list1 ]
另外,如果列表解析中还想嵌套列表解析可以吗,我发现形式会变成
[xxx,[xxx,xxx]]
列表解析目前给我的感觉是,可以处理逻辑上不是很复杂的for循环,如果层次多余3层,似乎不太合适。
已知一个列表[1,2,3,4,5,6]
要求能被三整除的保留不能被3整除的则乘以2.
结果[2,4,3,8,10,6]
使用列表解析完成。
list1=[1,2,3,4,5,6]
a=[i if i%3==0 else i*2 for i in list1 ]
另外,如果列表解析中还想嵌套列表解析可以吗,我发现形式会变成
[xxx,[xxx,xxx]]
列表解析目前给我的感觉是,可以处理逻辑上不是很复杂的for循环,如果层次多余3层,似乎不太合适。
[ i if (i % 3 == 0) else (i * 2) for i in l]
这里要的不是 过滤 ,而是 格式化 。即,“能被 3 整除的原样输出,否则乘以 2 输出”。
最好的方式是定义一个函数, 简单的才是最好的
列表表达式
总而言之, 列表表达式适合「这个逻辑很简单, 写成一个函数太小题大做了,要是能随手写出来就好了. 而且我能确保: 以后我还能一眼看懂这里的逻辑, 也能确保别人能一眼看懂这里的逻辑」
def _handle_number(number):
"""处理函数
:type number: int
:param number:
:rtype: int
:return:
"""
if number % 3 == 0:
return number
else:
return number * 2
handled_list = map(_handle_number, mylist)
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决