令人爱不释手的Python列表推导式

2022-07-27,,,,

一、采用两种方法,对整数list列表[0, 1, 2, … , 99999]中的各项求平方。

# 方法一:
dtList = list(range(100000))
for i in dtList:
    dtList[i] = dtList[i] * dtList[i]
# 方法二:
dtList = [i*i for i in range(100000)]

“方法一”用时约40毫秒,“方法二”用时约7毫秒。后者只用了前者的***六分之一***左右的时间。

列表推导式高效!

二、列表推导式中,当for循环遭遇if时。

# 整数列表1至10,对偶数平方,对奇数不变:
dtList = [i ** 2  if (i % 2) == 0 else i
          for i in range(1, 11)]
print(dtList)

# if在for前:用于对for循环结果的转换
# 输出结果如下所示:
[1, 4, 3, 16, 5, 36, 7, 64, 9, 100]
# 整数列表1至10,对偶数平方,对奇数丢弃:
dtList = [i ** 2  
          for i in range(1, 11) if (i % 2) == 0]
print(dtList)

# if在for后:用于对for循环结果的过滤
# 输出结果如下所示:
[4, 16, 36, 64, 100]

if在前是转换(影响“值”),if在后是过滤(影响“量”)。

三、采用多层for循环,打印漂亮的九九乘法口诀表。

print(
    ''.join(
                [
                '{}x{}={:<4}{}'.format(col, row, col * row, '\n' if row == col else '')
                 for row in range(1, 10)
                     for col in range(1, row+1)
                ]
            )
    )
# 打印出非常规整、漂亮的九九乘法口诀表:
1x1=1   
1x2=2   2x2=4   
1x3=3   2x3=6   3x3=9   
1x4=4   2x4=8   3x4=12  4x4=16  
1x5=5   2x5=10  3x5=15  4x5=20  5x5=25  
1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36  
1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49  
1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64  
1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81  



                        列表推导式的优势:

                        - 高效
                        - 简洁
                        - 表达能力强

                        列表推导式的劣势:代码可读性稍差

本文地址:https://blog.csdn.net/weixin_43838715/article/details/110220205

《令人爱不释手的Python列表推导式.doc》

下载本文的Word格式文档,以方便收藏与打印。