列表推导式

时间:2019-01-17
本文章向大家介绍列表推导式,主要包括列表推导式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号

1、列表推导式

print("----------------------列表推导式--------------------")
list1 = [2,4,6]
printString=[3*x for x in list1 if x>2]       #第一个for前面是输出的值,元组需要添加括号 可以有多个for或者if
print(printString)
#等同于上上述列表推导式
printString1=[]
for x in list1:
    if x>2:
        printString1.append(3*x)
print(printString1)

print("---------------表达式推导出一个元组---------------------")
list2 = [10,20,30]
print([[x,x**2] for x in list2 ])

print("----------对序列里每一个元素逐个调用某方法 strip()去掉前后空格-----------")
list3 = ["  string"," python ","java  "]
print([count.strip() for count in list3])

print("------两列表中的各项和---------")
list4 = [10,15,-8]
list5 = [7,24,-20]
print([x+y for x in list4 for y in list5])
print("------两列表中的各项积---------")
print([x*y for x in list4 for y in list5])
print("------两列表中的同索引积---------")
print([list4[i]*list5[i] for i in range(len(list4))])

结果:

2、嵌套列表

print("-------3*4的列表转换成4*3的列表-------")
listBefore = [[1,2,3,4],[10,20,30,40],[100,200,300,400]]
print([[row[i] for row in listBefore] for i in range(4)])
print("----与上述推导列表结果一样-----")
listAfter = []
for i in range(4):
    After_row = []      # fter_row第一次值为[1,10,100]  第二次值为[2,20,200] 以此类推
    for row in listBefore:
        After_row.append(row[i])        #row[i] 1,10,100   2,20,200  以此类推
    listAfter.append(After_row)
print(listAfter)