还没结束!使用过滤器也可以获得同样的结果:
def get_numbers(input_char): if not isinstance(input_char,str): return True return False my_list = [1,2,3,'a','b','c'] check_list = filter(get_numbers, my_list) for items in check_list: print(items)
现在你可能明白了,实现同样的结果有很多方法,你必须找出适合你或你团队的那个。
额外知识点
- 反向列表(或字符串):
names = ['First' , 'Middle' , 'Last'] print(names[::-1]) >>> ['Last', 'Middle', 'First']
- 在列表中加入元素:
names = ['First' , 'Middle' , 'Last'] full_name = ' '.join(names) print(f'Full Name:\n{full_name}') >>> First Middle Last6. 使用循环:
是否在Python中见过这样的代码?
greek_gods = ['Zeus' , 'Hera' , 'Poseidon' , 'Apollo' , 'Bob'] for index in range(0,len(greek_gods)): print (f'at index {index} , we have : {greek_gods[index]}')
你可能发现了,它来自其他语言,这不是Python的风格。在Python中,你可以使用for-each循环:
for name in greek_gods: print (f'Greek God: {name}')
你很快就能发现,这里我们不包含索引。如果想用索引打印要怎么做?在Python中,你可以使用枚举(enumerate参数),这是一种访问所需内容的绝佳方案。
for index, name in enumerate(greek_gods): print (f'at index {index} , we have : {name}')
7. 使用函数(并正确谈论函数):
我在从事动画工作时,总是说如果同一个操作重复5次,就应该考虑是否需要写个程序。有些时候花上两周开发一款工具可以节省你六个礼拜的工作时间。
编写代码时,如果发现同一动作执行了不止一次,应该考虑这是过程还是函数,还不只是写写代码。函数会返回内容,过程则只是运行代码,第一个案例是个过程,第二个是函数。
这样说可能会令人困惑,下面是其工作原理的示意图:
注意print和return的差异,看起来也许很相似,但如果你查看输出结果,函数只会返回发送的名称。