⼀⾏Python 代码实现for 循环和ifelse 判断
Outline
平时写if 判断和for 循环都是中规中矩,按常规套路来,但今天同事问我这⽅⾯的东西给;把他for 循环+if else 判断改成了⼀⾏。
改完之后代码看起来更优雅了 哈哈哈
需求
假设有这么个需求:
判断⼀个可迭代对象中的元素是否以字母 “s” 结尾;
以 “s” 结尾,则保留这个元素
不以 “s” 结尾,则把这个元素替换为 666
实现
⾸先要for 循环遍历这个可迭代对象,然后对每次迭代的元素进⾏判断,看是否以“s”结尾;常规解法:
for 循环+ if else
⼀⾏实现:
def is_endwith_s(n):
"""
判断是否以s 结尾
:param n: str or int
:return: bool
"""
return str(n).endswith('s')
# 待判断的可迭代对象
lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
lis_s = []
for i in lis:
if is_endwith_s(i):
lis_s.append(i)
print (lis_s)# ['ss', 'ss', 'ss', 'ss', 'ss', 'ss', 'ss']
保留以s
结尾的
def is_endwith_s(n):
"""
判断是否以s 结尾
:param n: str or int
:return: bool
"""
return str(n).endswith('s')
# 待判断的可迭代对象
lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
lis_s = []
for i in lis:
if is_endwith_s(i):
lis_s.append(i)
else :
lis_s.append(666)
print (lis_s)# ['ss', 'ss', 'ss', 666, 666, 'ss', 'ss', 'ss', 'ss', 666]
保留以s 结尾的,不是s 结尾替换为
66
def is_endwith_s(n):
"""
判断是否以s结尾
:param n: str or int
:return: bool
"""
return str(n).endswith('s')
# 待判断的可迭代对象
lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
lis_s = [word for word in lis if is_endwith_s(word)]
print(lis_s)
# ['ss', 'ss', 'ss', 'ss', 'ss', 'ss', 'ss']
保留以s结尾的
def is_endwith_s(n):
"""
判断是否以s结尾python新手代码错了应该怎么改
:param n: str or int
:return: bool
"""
return str(n).endswith('s')
# 待判断的可迭代对象
lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
lis_s = [word if is_endwith_s(word) else'666'for word in lis] print(lis_s)
# ['ss', 'ss', 'ss', '666', '666', 'ss', 'ss', 'ss', 'ss', '666']
保留以s结尾的,不是s结尾替换为666
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论