当前位置:   article > 正文

python列表生成式_python for x in range(1,10):

python for x in range(1,10):

1.生成列表

要生成 list[1,2,3,4,5],可以用range(1,6)

要生成[1*1,2*2,3*3,4*4,5*5] 怎么办?

循环太繁琐,而列表生成式则可以用一行语句代替循环完成,这种写法就是python特有的列表生成式。

利用列表生成式,可以以非常简洁的代码生成 list。

 

练习:请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, ..., 29x30]

提示:range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,...]

  1. 代码参考:
  2. 要生成[1*1,2*2,3*3,4*4,5*5] 怎么办?
  3. 方法一,循坏
  4. L = []
  5. for x in range(1, 6):
  6. L.append(x * x)
  7. print(L)
  8. print("----------------------")
  9. 方法二,列表生成式
  10. L1 = [x * x for x in range(1,6)]
  11. print(L1)
  12. '''
  13. 练习:请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, ..., 29x30]
  14. 提示:range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,...]
  15. '''
  16. y = [x * (x + 1) for x in range(1,30,2)]
  17. print(y)

 

2.条件过滤

列表生成式的 for 循环后面还可以加上 if 判断。例如:

 

练习:请编写一个函数,它接受一个 list,然后把list中的所有字符串变成大写后返回,非字符串元素将被忽略。

提示:

1. isinstance(x, str) 可以判断变量 x 是否是字符串;

2. 字符串的 upper() 方法可以返回大写的字母。

  1. 代码参考:
  2. L = [x * x for x in range(1, 11)]
  3. print(L)
  4. #如果我们只想要奇数的平方,不改动 range()的情况下,可以加上 if 来筛选
  5. L1 = [x * x for x in range(1, 11) if x % 2 == 1]
  6. print(L1)
  7. '''有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中'''
  8. #编写一个函数,它接受一个 list,然后把list中的所有字符串变成大写后返回,非字符串元素将被忽略
  9. def toUpper(L):
  10. return [x.upper() for x in L if isinstance(x, str)]
  11. L1 = ['Hello', 0, 'RaoJuan', 317]
  12. print(toUpper(L1))

 

3.多层表达式

for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表,例如:

 

练习:利用 3 层for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121。

 

  1. 代码参考:
  2. #coding:utf-8
  3. #对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:
  4. L = []
  5. for x in 'ABC':
  6. for y in '123':
  7. L.append(x + y)
  8. print("for循环结果:", L)
  9. #使用多层表达式
  10. L1 = [x + y for x in 'ABC' for y in '123']
  11. print("列表生成式结果:", L1)
  12. #利用 3 层for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121
  13. #方法一:多重for循环
  14. L2=[]
  15. for x in range(1, 10):
  16. for y in range(10):
  17. for z in range(1, 10):
  18. if x==z :
  19. L2.append(100*x+10*y+z)
  20. print("方法一结果:", L2)
  21. #方法二:多层列表生成式
  22. L3 = [100 * x + 10 * y + z for x in range(1, 10) for y in range(10) for z in range(10) if x == z]
  23. print("方法二结果:", L3)
  24. #方法三:索引
  25. L4 = [i for i in range(100, 1000) if str(i)[0] == str(i)[-1]]
  26. print("方法三结果:", L4)
  27. #方法四:切片
  28. L5 = [i for i in range(100, 1000) if str(i)[:1] == str(i)[-1:]]
  29. print("方法四结果:", L5)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/944164
推荐阅读
相关标签
  

闽ICP备14008679号