三、操作列表

1遍历整个列表

1.1使用for循环遍历

items = [1,2,3,4,5,6,7]
for item in items:
    print(item)

1.2拉链(zip)方法遍历

这种方法本质上还是for循环,只不过是在输出每一项之前都会输出一下该项的索引,如:

guns = ['m4','aug','ak47','ump9']
for i,v in zip(range(len(guns)),guns):
    print(i,v)

输出:

0 m4
1 aug
2 ak47
3 ump9

1.3enumerate方法遍历

个人感觉和上面的zip方法很相似,不过可以传入起始索引,如:

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(list(enumerate(seasons)))
print(list(enumerate(seasons, start=1)))

输出:

[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

2创建数字列表

2.1使用range()函数

a = range(5)
print(a)
for b in a:
    print(b)

输出:

range(0, 5)
0
1
2
3
4

这里可以看出来,range(n)就是等于range(0,n),即可以输出从0到n-1的数字,不输出n

2.2创建数字列表(list(range()))

numbers = list(range(1,10,3))
print(numbers)

输出:

[1, 4, 7]

2.3对数字列表执行简单的统计计算

digits = [1,2,3,4,5,6,7,8,9,0]
print(min(digits))
print(max(digits))
print(sum(digits))

输出:

0
9
45

2.4列表解析(利用已有列表,高效创建新列表的方式)

注:2.4参照此博文(https://www.cnblogs.com/liu-shuai/p/6098227.html)来写
2.4.1列出1~10所有数字的平方
普通方法:

square = []
for i in range(1,11):
    square.append(i**2)
print(square)

列表解析:

square = [square ** 2 for square in range(1,11)]
print(square)

2.4.2列出1~10中大于等于4的数字的平方
普通方法:

L = []
for i in range(1,11):
    if i>=4:
        L.append(i**2)
print(L)

列表解析:

L = [i ** 2 for i in range(1,11) if i >= 4]
print(L)

2.4.3列出1~10所有数字的平方除以2的值
普通方法:

L = []
for i in range(1,11):
    L.append(i**2/2)
print(L)

列表解析:

L = [i ** 2/2 for i in range(1,11)]
print(L)

2.2.4使用列表解析生成 9*9 乘法表

print('\n'.join([''.join(['%s*%s=%-2s '%(y,x,x*y)for y in range(1,x+1)])for x in range(1,10)]))

3.使用列表的一部分

3.1切片

phones = ['Huawei','MI','vivo','oppo','iPhone']
print(phones[:2])
print(phones[3:])
print(phones[-3:])
print(phones[:-2])

输出:

['Huawei', 'MI']
['oppo', 'iPhone']
['vivo', 'oppo', 'iPhone']
['Huawei', 'MI', 'vivo']

3.2遍历切片

for phone in phones[:3]:
    print(phone)

输出:

Huawei
MI
vivo

3.3复制列表

foods = ['noodles','pizza','rice','cake']
foods_cp1 = foods[:]
foods_cp2 = foods#错误的复制列表的方法
print("foods_cp1:",foods_cp1)
print("foods_cp2:",foods_cp2)
foods.append('pancake')
print("\nafter append:")
print("foods",foods)
print("foods_cp1:",foods_cp1)
print("foods_cp2:",foods_cp2)

输出:

foods_cp1: ['noodles', 'pizza', 'rice', 'cake']
foods_cp2: ['noodles', 'pizza', 'rice', 'cake']

after append:
foods ['noodles', 'pizza', 'rice', 'cake', 'pancake']
foods_cp1: ['noodles', 'pizza', 'rice', 'cake']
foods_cp2: ['noodles', 'pizza', 'rice', 'cake', 'pancake']

如果我们只是简单的把foods赋值给food_cp,就不能得到两个列表,不是将foods的副本存储,这两个变量实技上是指向了同一个列表,因此当我们把新的元素加入foods时,foods_cp也会被加入相同的元素。通常情况下这并非我们想要的结果。因此要注意在复制列表的时候要用包含整个列表的切片来做。

你可能感兴趣的:(三、操作列表)