python列表生成式和if语句、if...else语句、zip函数结合使用

python列表生成式,就是通过一行代码语句生成一个列表,非常的方便快捷

1 python列表生成式

python列表生成式的语句机构如下:

[expression for x in iterable_object]

  • expression:是一个表达式,里面对循环变量x的一些操作
  • x:是循环变量
  • iterable_object:是一个可迭代的对象,这样才可以做循环

例子:对迭代对象[0, 1, 2, 3, 4]中的每一个元素做平方

if __name__ == '__main__':
    print([x**2 for x in range(5)])

# 输出结果
[0, 1, 4, 9, 16]

2 python列表生成式和if语句结合使用

python列表生成式if语句结合的机构如下:

[expression for x in iterable_object if condition]

  • expression:是一个表达式,只有满足if条件,才会对循环变量x进行表达式expression中的操作
  • x:是循环变量
  • iterable_object:是一个可迭代的对象,这样才可以做循环
  • condition:是if语句的判断条件,只有满足condition的循环变量才会执行expression

例子:对迭代对象[0, 1, 2, 3, 4]中大于2的元素做平方

if __name__ == '__main__':
    print([x**2 for x in range(5) if x > 2])
 
# 输出结果
[9, 16]

3 python列表生成式和if…else语句结合使用

python列表生成式if...else语句结合的机构如下:

[expression1 if condition else expression2 for x in iterable_object ]

  • expression1:一个表达式,只有满足if条件,才会对循环变量x进行表达式expression1中的操作
  • expression2:一个表达式,只有不满足if条件,才会对循环变量x进行表达式expression2中的操作
  • x:是循环变量
  • iterable_object:是一个可迭代的对象,这样才可以做循环
  • condition:是if语句的判断条件,只有满足condition的循环变量才会执行expression1,否则执行expression2

例子:对迭代对象[0, 1, 2, 3, 4]中大于2的元素做平方,小于2的做立方

if __name__ == '__main__':
    print([x**2 if x>2 else x**3 for x in range(5)])
 
# 输出结果
[0, 1, 8, 9, 16]

4 python生成表达式和zip函数结合使用

python生成表达式zip函数结合的结构如下:

[expression for x, y in zip(list1, list2)]

例如:我们有两个列表,把名字和性别配对,然后生成一个列表

if __name__ == '__main__':
    list1 = ["Tom", "Jack", "Will", "July"]
    list2 = ["man", "man", "man", "woman"]
    print([(name, sex) for name, sex in zip(list1, list2)])
    # 或 对表达式进行一些更复杂的操作(甚至可以调用一些函数)
    print(["名字:{}, 性别{}:".format(name, sex) for name, sex in zip(list1, list2)])

# 输出结果
[('Tom', 'man'), ('Jack', 'man'), ('Will', 'man'), ('July', 'woman')]
['名字:Tom, 性别man:', '名字:Jack, 性别man:', '名字:Will, 性别man:', '名字:July, 性别woman:']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章