python---列表

1. 什么是列表?

列表由一系列按特定顺序排列的元素组成。在Python中,用方括号([])表示列表,包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系,并用逗号分隔其中的元素。

2. 列表的创建

直接为列表赋值

cars = ['BMW', 'Audi', 'toyata']

创建空列表

#方法一 []
list1 = []

#方法二 list()
list2 = list()

 

3. 列表的操作

a.  索引与切片

  索引

cars = ['BMW', 'Audi', 'toyota']
print(cars[1])
# 运行结果:Audi

print(cars[-1])

# 运行结果: toyota


list1 = [1, 2, 3, ['a', 'b', 'c']]
print(list1[3])
# 运行结果: ['a', 'b', 'c']

print(list1[3][2])
# 运行结果:c

  切片

list1 = [1, 2, 3, ['a', 'b', 'c']]

print(list1[0:2])
# 运行结果: [1, 2]

print(list1[-1][1:3])

# 运行结果: ['b', 'c']

b. 列表的循环与遍历

1.

cars = ['BMW', 'Audi', 'toyota']
# for 循环遍历
for car in cars:
    print(car)


# while循环遍历

number = len(cars)
i = 0
while i < number:
    print(cars[i])
    i += 1
    
"""
运行结果:
BMW
Audi
toyota
"""

2. 列表中嵌套列表

cars1 = ['BMW', 'Audi']
cars2 = ['Toyota','Subaru']
cars = [cars1, cars2]

for item in cars:
    print(item)
"""
运行结果:
['BMW', 'Audi']
['Toyota', 'Subaru']
"""

for item in cars:
    for name in item:
        print(name)

"""
运行结果:
BMW
Audi
Toyota
Subaru
"""

 

3. 使用enumerate

cars1 = ['BMW', 'Audi']
cars2 = ['Toyota', 'Subaru']
cars = [cars1, cars2]

# 遍历一维列表
for i, value in enumerate(cars1):
    print(f'{i+1}个元素的值是{value}')

"""
运行结果:
1个元素的值是BMW
2个元素的值是Audi
"""

# 遍历二维列表
for i, value in enumerate(cars):
    print(f'{i + 1}个元素的值是{value}')
    for j, name in enumerate(value):
        print(f'{j + 1}个元素的值是{name}')

"""
运行结果:
1个元素的值是['BMW', 'Audi']
1个元素的值是BMW
2个元素的值是Audi
2个元素的值是['Toyota', 'Subaru']
1个元素的值是Toyota
2个元素的值是Subaru
"""

c. 增

append(): 将元素增加到列表末尾

cars = ['BMW', 'Audi']
cars.append('Toyota')
print(cars)

# 运行结果:['BMW', 'Audi', 'Toyota']

insert():在指定位置添加元素

cars = ['Audi', 'Toyota']
cars.insert(0, 'BMW')
print(cars)
# 运行结果:['BMW', 'Audi', 'Toyota']

extend(): 将列表作为对象增加到列表末尾

cars = ['BMW', 'Audi']
cars1 = ['Toyota', 'Subaru']
cars.extend(cars1)
print(cars)

# 运行结果:['BMW', 'Audi', 'Toyota', 'Subaru'] 

d. 改

cars = ['BMW', 'Audi', 'Toyota']
cars[2] = 'Subaru'
print(cars)
# 运行结果: ['BMW', 'Audi', 'Subaru']

cars[5] = 'Beyond'
print(cars)

# 运行结果: IndexError: list assignment index out of range

e. 查

in

cars = ['BMW', 'Audi', 'Toyota', 'Subaru']

if 'BMW' in cars:
    print('BMW is in cars')
else:
    print('BMW is not in cars')

# 运行结果: BMW is in cars

not in

cars = ['BMW', 'Audi', 'Toyota', 'Subaru']

if 'Beyond' not in cars:
    print('Beyond is not in cars')
else:
    print('Beyond is  in cars')

# 运行结果: Beyond is not in cars

index: 获取索引,如果列表里有重复的元素, 则返回第一个元素的索引; 如果没有该元素则返回 ValueError: 'Beyond' is not in list

cars = ['BMW', 'Audi', 'Toyota', 'Subaru']

print(cars.index('Audi'))
# 运行结果: 1

cars.append('Audi')
print(cars.index('Audi'))
# 运行结果: 1

print(cars.index('Beyond'))
# 运行结果: ValueError: 'Beyond' is not in list

 

count:计算元素个数

cars = ['BMW', 'Audi', 'Toyota', 'Subaru', 'Audi']

print(cars.count('Audi'))
# 运行结果:2

print(cars.count('Beyond'))
# 运行结果:0

f.  删

del: 根据索引删除

cars = ['BMW', 'Audi', 'Toyota', 'Subaru', 'Audi']
del cars[-1]
print(cars)

# 运行结果:['BMW', 'Audi', 'Toyota', 'Subaru']

pop(): 删除最后一个元素

cars = ['BMW', 'Audi', 'Toyota', 'Subaru']
cars.pop()
print(cars)

# 运行结果: ['BMW', 'Audi', 'Toyota']

remove(): 删除指定元素,删除第一个匹配的元素

cars = ['BMW', 'Audi', 'Toyota', 'Subaru', 'BMW']
cars.remove('Audi')
print(cars)
# 运行结果: ['BMW', 'Toyota', 'Subaru', 'BMW']

cars = ['BMW', 'Audi', 'Toyota', 'Subaru', 'BMW']
cars.remove('BMW')
print(cars)

# 运行结果: ['Audi', 'Toyota', 'Subaru', 'BMW']

cars = ['BMW', 'Audi', 'Toyota', 'Subaru', 'BMW']
cars.remove('Beyond')
print(cars)

# 运行结果:ValueError: list.remove(x): x not in list

g. 排序

sort(): 将list按照指定顺序重新排列,默认由小到大, 参数reverse=True 可改为倒序,由大到小

num = [2, 4, 5, 3, 7, 8, 1]
num.sort()
print(num)

# 输出的结果: [1, 2, 3, 4, 5, 7, 8]

num = [2, 4, 5, 3, 7, 8, 1]
num.sort(reverse=True)
print(num)

# 输出结果: [8, 7, 5, 4, 3, 2, 1]

reverse(): 将list倒转过来 

num = [2, 4, 5, 3, 7, 8, 1]
num.reverse()
print(num)

# 输出的结果: [1, 8, 7, 3, 5, 4, 2]

h. 复制

copy(): 浅拷贝:没有拷贝子对象,所以原始数据改变,子对象会改变

list_a = [1, 2, ['a', 'b']]
list_b = list_a.copy()
print(list_a)
print(list_b)

"""
运行结果:
[1, 2, ['a', 'b']]
[1, 2, ['a', 'b']]
"""

list_a.append(3)
print(list_a)
print(list_b)

"""
运行结果:
[1, 2, ['a', 'b'], 3]
[1, 2, ['a', 'b']]
"""

list_a[2].append('c')
print(list_a)
print(list_b)

"""
运行结果:
[1, 2, ['a', 'b', 'c'], 3]
[1, 2, ['a', 'b', 'c']]----里边的子对象被改变了
"""

deepcopy(): 包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

import copy

list_a = [1, 2, ['a', 'b']]
list_b = copy.deepcopy(list_a)
print(list_a)
print(list_b)

"""
运行结果:
[1, 2, ['a', 'b']]
[1, 2, ['a', 'b']]
"""

list_a.append(3)
print(list_a)
print(list_b)

"""
运行结果:
[1, 2, ['a', 'b'], 3]
[1, 2, ['a', 'b']]
"""

list_a[2].append('c')
print(list_a)
print(list_b)

"""
[1, 2, ['a', 'b', 'c'], 3]
[1, 2, ['a', 'b']]
"""

 4.列表解析式

a.  最简形式:[expression for item in list]

"""
求1-5 的平方
"""
print([i ** 2 for i in range(1, 6)])
# 输出结果:[1, 4, 9, 16, 25]
word_list = ["I", "love", "China"]
print([item.title() for item in word_list])
# 输出结果:['I', 'Love', "China"]

b. 过滤条件形式 [expression for item in list if conditional]

如果只有if, 则if在for循环后边;如果有if...else, 则if...else在for循环前边

 
list_val = []
for i in range(1, 21):
    if i % 2 ==0:
        list_val.append(i)
print(list_val)

# 列表解析式
print([i for i in range(1, 21) if i % 2 == 0])
# 运行结果:[2, 4, 6, 8, 10, 12, 14, 16, 18]
 
 
names = ['Elsa', 'John', 'Jessie']
new_list = []
for item in names:
    if len(item) > 4:
        new_list.append(item.upper())
    else:
        new_list.append(item.lower())
print(new_list)

# 列表解析式
print([item.upper() if len(item) >4 else item.lower() for item in names])

# 运行结果:['elsa', 'john', 'JESSIE']
 

c. 循环嵌套形式[expression for i in list1 for j in list2]

 
list_val = []
for i in range(1,3):
    for j in range(1,3):
        list_val.append(f'{i} + {j}')
print(list_val)

# 列表解析式
print([f'{i} + {j}' for i in range(1, 3) for j in range(1, 3)])
# 运行结果:['1 + 1', '1 + 2', '2 + 1', '2 + 2']
 

  

posted @ 2022-01-11 20:35  ElsaWang  阅读(81)  评论(0)    收藏  举报