【Python入门】day-3 优雅的简单

目录

列表

1、创建列表

2、输出列表

3、列表切片

4、改变列表

5、四则运算

6、嵌套列表

 7、列表推导式


列表

1、创建列表

Python中的列表可以C中数组类比,但列表中存放不同的数据类型,创建如下:

name = [1, 2, 3, 4, "lwy"]

列表名,方括号,用英文逗号隔开每个元素

2、输出列表

print(name)
# 打印所有元素
print(name[3])
# 打印第四个元素

用法与C相似

3、列表切片

可直接输出一定序号范围内的列表对象,之间使用冒号,如下:

print(name[1:3])
# 打印第2到第3-1号元素

可指定跨度,即再使用一个冒号,如下:

print(name[0:5:2])
# 打印第0、2、4号元素

从头或到尾可省略,如下:

print(name[:])
# 打印所有元素

最灵活的地方在于,列表的排序存在负序,即结尾为-1,倒数第二为-2,由此,倒序输出就变得极为简单,如下:

print(name[-1])
# 输出最后一位
print(name[::-1])
# 倒序输出

优雅的精髓在于简单

4、改变列表

name.append("lxy")
# 在结尾增加“lxy”
name.extend(5, 6, 7)
# 在结尾增加一组数据

特别的,可以使用切片的原理增加数据

name[len(name):] = [5, 6, 7]

在指定位置添加可使用insert,两个参数分别为插入位置,插入数据

name.insert(1, "lxy")
# 在序号为1的位置插入“lxy”

使用remove可删除列表中的某个特定数据

name.remove(1)
# 删除列表出现的第一个1

删除某个位置上的数据可使用pop,参数为序号

name.pop(1)
# 删除序号为1的数据

清空列表可使用clear

name.clear()
# 此时列表为空

可直接通过索引进行修改

name[0] = "lxy"

可直接利用切片修改

name[1:3] = [1, 2]
# 将序号为1~2的数据改为1和2

name[1:] = [2, 3, 4, 5]
# 将序号1后的数据改为2,3,4,5

sort可将数字列表从小到大排序

number = [1, 3, 5, 6, 3, 9]
number.sort()
print(number)

在sort的基础上可使用reverse倒序,reverse表示首与尾交换,第二和倒二交换,以此类推

number = [1, 3, 5, 6, 3, 9]
number.sort()
number.reverse()
print(number)

sort函数中可用参数一步到位实现倒序

number = [1, 3, 5, 6, 3, 9]
number.sort(reverse = True)
print(number)

count可统计列表中某数据出现的次数,参数为数据值

number = [1, 3, 5, 6, 3, 9]
print(number.count(3))

index可查找数据对应的索引

number = [1, 3, 5, 6, 3, 9]
print(number.index(1))

利用index就可在已知数据值得情况下改变该数据

number = [1, 3, 5, 6, 3, 9]
number[number.index(1)] = 2
print(number)

index的原型为index(x, star, end)从star到end-1中查找x的索引

可使用copy复制列表

name = ["lwy", "love", "lxy"]
name_1 = name.copy()
print(name_1)

当然,切片是非常强大的,同样可以用切片的原理复制列表

name = ["lwy", "love", "lxy"]
name_1 = name[:]
print(name_1)

5、四则运算

加法表示拼接,乘法表示复制

A = [1, 2, 3]
B = [4, 5, 6]
C = A + B
print(C)

A *= 3
print(A)

6、嵌套列表

与C中二维数组相似,具有相似的使用方法

matrix = [[1, 2, 3],[4, 5, 6], [7, 8, 9]]

matrix[0][0]
# 表示第一个列表中的第一个元素

可使用嵌套循环来输出嵌套列表

for i in matrix:
    for each in i:
        print(each, end=" ")
    print()

嵌套列表的赋值如下,先定义一个一维列表,再将一维列表中的每个元素强塞成列表

A = [0] * 3
for i in range(3):
    A[i] = [0] * 3
print(A)

注意嵌套列表的拷贝问题:即区分浅拷贝和深拷贝,通过copy库可实现深拷贝

【Python入门】day-3 优雅的简单_第1张图片

 7、列表推导式

语法为:[expression for target in iterable]

可以理解为是列表中元素的通式,新列表中的元素取决于expression

nums = [1, 2, 3, 4, 5]
nums = [i * 2 for i in nums]
print(nums)

nums = [i * 2 for i in range(1, 6)]
print(nums)

nums = [i for i in "lwy love lxy"]
print(nums)

在嵌套列表中列表推导式大显神通

nums = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]
x = [row[1] for row in nums]
print(x)

即提取第二竖行,也可实现对角,如下:

nums = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]
x = [nums[i][i] for i in range(len(nums))]
print(x)

关键在于理解好[expression for target in iterable]的语法逻辑

进阶语法:[expression for target in iterable if condition]

nums = [i for i in range(5) if i % 2 == 0]
print(nums)
# nums = [0, 2, 4]


nums = [i + 1 for i in range(5) if i % 2 == 0]
print(nums)
# nums = [1, 3, 5]

此时得到的nums中只含偶数

特别注意:执行顺序为 for i in range(5) → if i % 2 == 0 → i

你可能感兴趣的:(python)