【个人笔记】Python-列表与列表生成式

在Python语言中,所谓的列表生成式,就是说可以生成list列表的表达式,是Python内置的一种强大的功能。

  1.1、Python 列表(List)

    python里面  [  ]  表示一个列表

    列表是最常用的Python数据类型

    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

    

list = [1,2,3,4,5,6,7]

    序列都可以进行的操作包括索引,切片,加,乘,检查成员。索引的值从0开始,也可以从最后一个开始数,那么最后一个就是倒数第一,也就是-1,以此类推

list_num = [1, 2, 3, 4, 5, 6, 7]
# 输出索引为0的值并打印
print(list_num[0])
# 输出索引为-1的值并打印
print(list_num[-1])
# 用索引值来修改列表
list_num[3] = 10
# 打印列表
print(list_num)

    打印结果如下

    对列表进行切片操作

list_num = [1, 2, 3, 4, 5, 6, 7]
# 对列表进行切片操作 切片遵循左闭右开原则
list_num1 = list_num[0:-1]
# 打印列表list_num1
print(list_num1)

    打印结果如下

 1.2、快速生成一个列表

    快速生成一个列表可以用range()函数来生成:

    注意:此时提到了rangge函数

    概念:range() 函数可创建一个整数列表,一般用在 for 循环中。

        range(起始值,终止值,步长)     遵循左闭右开

    

# 使用range()函数快速生成列表
# 首先定义一个空列表
list_num = []
# 使用for循环编列range函数,range函数同样遵循左闭右开原则
for i in range(0, 10):
    # 使用append()函数向列表中追加元素
    list_num.append(i)
# 打印列表
print(list_num)

    输出结果:

1.2使用列表生成式

  列表生成式简而言之:用一个表达式即可生成列表

  上面我们使用了for循环和range函数来快速生成了一个列表,那么怎么用一个表达式来生成一个列表呢?下面我们来看看答案:

# 首先定义一个列表
list_a = [1, 2, 3, 4, 5]
# 使用列表生成式
list_b =[x for x in list_a]
# 打印列表list_b
print(list_b)

  输出结果:

2.案列

  1> 已知列表list = ["pYTHON","iS","eASY"]【使用列表生成式实现】,生成一个新的列表,并且结果大小写字母互换。

# 已知列表list = ["pYTHON","iS","eASY"]【使用列表生成式实现】,生成一个新的列表,并且结果大小写字母互换

# 首先了解大小写互换函数
a = 'aBcD'
print('大小写转换函数swapcase()')
print(a.swapcase())

list_one = ["pYTHON", "iS", "eASY"]
print('源列表:' + str(list_one))


# 定义普通转换方法的函数
def String_td(a):
    list_two = []
    # 普通方法
    for i in a:
        list_two.append(i.swapcase())
    return list_two


print('下面输出普通方法(for遍历)转换结果:')
# 调用函数
print(String_td(list_one))

# 使用列表生成式
print('下面使用列表生成式转换:')
list_three = [x.swapcase() for x in list_one]
print(list_three)

  输出结果:

2>如果想对一个列表里面的数据筛选,比如:[1, 3, -3, 4, -2, 8, -7, 6],找出大于0的数,按正常思维可以for循环挨个判断,符合条件的放到新的列表

# 如果想对一个列表里面的数据筛选,比如:[57, 3, -3, 4, 9, -8, 11, -66],找出大于0的数
# 按正常思维可以for循环挨个判断,符合条件的放到新的列表
# 定义一个列表
list_a = [57, 3, -3, 4, 9, -8, 11, -66]
# 定义一个空列表,存储需要的数据
list_b = []
# for循环遍历列表list_a
for i in list_a:
    # 加入判断筛选数据
    if i > 0:
        # 大于0的数据追加到list_b
        list_b.append(i)
# 打印list_b
print(list_b)

# 使用列表生成式
list_c = [x for x in list_a if x > 0]
print(list_c)

  输出结果:

3>前面两个案列列表生成式都只传一个参数x,如果有两个列表如何去运算呢?

  举例:a = [1,2,3]      b = [ 'A' , 'B' , 'C' ]     生成 ls = [ 'A1' , 'B2' , 'C3 '

  先来看看普通for循环:

# 举例:a = [1,2,3]      b = [ 'A' , 'B' , 'C' ]     生成 ls = [ 'A1' , 'B2' , 'C3 '
a = [1, 2, 3]
b = ['A', 'B', 'C']
ls = []
# 获取0,1,2,用作原始列表的下标,索引原始列表的元素,以便于操作
for i in range(0, 3):
    # int和str不能直接拼接,先将int转为str
    x = b[i] + str(a[i])
    ls.append(x)
print(ls)

  输出结果:

  使用列表生成式:

# 举例:a = [1,2,3]      b = [ 'A' , 'B' , 'C' ]     生成 ls = [ 'A1' , 'B2' , 'C3 '
a = [1, 2, 3]
b = ['A', 'B', 'C']
ls = []
# # 获取0,1,2,用作原始列表的下标,索引原始列表的元素,以便于操作
# for i in range(0, 3):
#     # int和str不能直接拼接,先将int转为str
#     x = b[i] + str(a[i])
#     ls.append(x)
# print(ls)
# 使用列表生成式
ls_1 = [x + str(i) for i, x in zip(a, b)]
print(ls_1)

  输出结果:

待续.....

2019-11-30

01:39:36

原文地址:https://www.cnblogs.com/cxstudypython/p/11961170.html