python3列表推导式中使用if与if-else及多套for生成列表

列表生成式中使用if与if-els

列表推导式总共有两种形式:

  • [x for x in data if condition] 此处if主要起条件判断作用,data数据中只有满足if条件的才会被留下,最后统一生成为一个数据列表
  • [exp1 if condition else exp2 for x in data] 此处if…else主要起赋值作用,当data中的数据满足if条件时将其做exp1处理,否则按照exp2处理,最后统一生成为一个
    数据列表

示例
1-100中3的倍数

p = [x for x in range(1,101) if x%3 == 0]

p值列表为:

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93
, 96, 99]

#1-100中,不是3的倍数的数去相反数,其余的数保持不变

q = [x if x%3==0 else -x for x in range(1,101)]

q值列表为:

[-1, -2, 3, -4, -5, 6, -7, -8, 9, -10, -11, 12, -13, -14, 15, -16, -17, 18, -19, -20, 21, -22, -23, 24, -25, -26, 27, -2
8, -29, 30, -31, -32, 33, -34, -35, 36, -37, -38, 39, -40, -41, 42, -43, -44, 45, -46, -47, 48, -49, -50, 51, -52, -53,
54, -55, -56, 57, -58, -59, 60, -61, -62, 63, -64, -65, 66, -67, -68, 69, -70, -71, 72, -73, -74, 75, -76, -77, 78, -79,
 -80, 81, -82, -83, 84, -85, -86, 87, -88, -89, 90, -91, -92, 93, -94, -95, 96, -97, -98, 99, -100]

多层for生成列表

示例

s= [m + n +l  for m in 'ABC' for n in 'DEF' for l in 'HIJ']

s列表为:

['ADH', 'ADI', 'ADJ', 'AEH', 'AEI', 'AEJ', 'AFH', 'AFI', 'AFJ', 'BDH', 'BDI', 'BDJ', 'BEH', 'BEI', 'BEJ', 'BFH', 'BFI',
'BFJ', 'CDH', 'CDI', 'CDJ', 'CEH', 'CEI', 'CEJ', 'CFH', 'CFI', 'CFJ']

多层for写法:

    for m in 'ABC':
        for n in 'DEF':
            for l in 'HIJ':
               print(m+n+l,end=' ')

打印:

ADH ADI ADJ AEH AEI AEJ AFH AFI AFJ BDH BDI BDJ BEH BEI BEJ BFH BFI BFJ CDH CDI CDJ CEH CEI CEJ CFH CFI CFJ 

你可能感兴趣的:(python)