列表生成式

注释的部分6行代码,列表生产式的写法只需要1行,简洁明了,服~

语法和思维需要稍微的转变,需要生成的元素放在最前面,后面跟for循环;for循环后还可以加条件判断作为过滤条件

def prime_num(num):
    # num_p=2
    # prime_list=[]
    # while num_p<num:
    #   if is_prime(num_p):
    #       prime_list.append(num_p)
    #   num_p+=1
    # 下面是列表生成式的写法
    prime_list = [i for i in range(2,num) if is_prime(i)]
    print(prime_list)
    print("_______________")
    return prime_list

还可以使用两层循环,例如生成全排列

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']