零基础入门python3.7 ——基础知识总结(四)列表(list)

Python 序列(Sequence)是指按特定顺序依次排列的一组数据,它们可以占用一块连续的内存,也可以分散到多块内存中。Python 中的序列类型包括列表(list)、元组(tuple)、字典(dict)和集合(set)。

列表(list)和元组(tuple)比较相似,它们都按顺序保存元素,所有的元素占用一块连续的内存,每个元素都有自己的索引,因此列表和元组的元素都可以通过索引(index)来访问。它们的区别在于:列表是可以修改的,而元组是不可修改的。

字典(dict)和集合(set)存储的数据都是无序的,每份元素占用不同的内存,其中字典元素以 key-value 的形式保存。

一。列表list

所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。

序列索引

列表中的每一个元素都有属于自己隐形的编号。 同个这个编号可以访问到编号所对应的元素。  从左向右索引从0开始。 从右向左索引从-1开始

a = [1, 2, 'python', 'python3.7', True, False]
print(a[0])
print(a[5])
print(a[-1])
print(a[5] == a[-1])

1
False
False
True

定义列表

列表中可以包含python中的任何数据类型  有两种方法可以创建列表

使用‘[]’直接创建并一般将其赋值给一个变量

a = [1, 2, 'python', 'python3.7', True, False]
print(a)

[1, 2, 'python', 'python3.7', True, False]

还可以创建空列表

b = []
print(b)

[]

使用list()函数创建列表

# 将字符串转换成列表
a = list('python3.7')
print(a)
print('-------------')

# 将元组转换成列表
b = list((1, 2, 3, 4, 5))
print(b)
print('--------------')

# 将字典转换成列表
c = list({"name": "小张", 1: 100})
print(c)
print('--------------')

# 将区间转换成列表
d = [list(range(0, 10))]
print(d)
print('---------------')

# 创建空列表
print(list())


['p', 'y', 't', 'h', 'o', 'n', '3', '.', '7']
-------------
[1, 2, 3, 4, 5]
--------------
['name', 1]
--------------
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
---------------
[]

列表元素的访问

可以通过索引访问列表中的元素。 但是不能超过列表的最大索引

a = [1, 2, 'python', 'python3.7', True, False]
print(a[3])
print('-----------')
print(a[4])
print('-----------')
print(a[10])

python3.7
-----------
True
-----------
Traceback (most recent call last):
  File "/Users/apple/Desktop/python3/python20.py", line 6, in <module>
    print(a[10])
IndexError: list index out of range

序列切片

该操作可以访问一定范围内的列表。返回一个新的列表

a = [1, 2, 'python', 'python3.7', True, False]
"""
sname:表示序列的名称;
start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从序列的开头进行切片;
end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;
step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果 step 的值大于 1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置 step 的值,则最后一个冒号就可以省略。
"""
print(a[1:])
print(a[:])
print(a[4])
print(a[2::2])
print(a[::2])
print(a[::])


[2, 'python', 'python3.7', True, False]
[1, 2, 'python', 'python3.7', True, False]
True
['python', True]
[1, 'python', True]
[1, 2, 'python', 'python3.7', True, False]

修改单个元素

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a[1] = 'java'
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[1, 'java', 'python', 'python3.7', True, False]

修改一组元素 Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a[1:  4] = [100, 2000, 2000, 300, 'java']
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[1, 100, 2000, 2000, 300, 'java', True, False]

如果对空切片(slice)赋值,就相当于插入一组新的元素:

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a[4: 4] = [100, 2000, 2000, 300, 'java']
print(a)


[1, 2, 'python', 'python3.7', True, False]
-------
[1, 2, 'python', 'python3.7', 100, 2000, 2000, 300, 'java', True, False]

使用切片语法赋值时,Python 不支持单个值,例如下面的写法就是错误的:

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a[4: 4] = 100
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
Traceback (most recent call last):
  File "/Users/apple/Desktop/python3/python20.py", line 5, in <module>
    a[4: 4] = 100
TypeError: can only assign an iterable

但是如果使用字符串赋值,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素,请看下面的代码:

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a[4: 4] = "java"
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[1, 2, 'python', 'python3.7', 'j', 'a', 'v', 'a', True, False]

使用切片语法时也可以指定步长(step 参数),但这个时候就要求所赋值的新元素的个数与原有元素的个数相同,

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a[1:5:2] = [100, 200]
print(a)
print('--------')

a[1:5:2] = '100'
print(a)


[1, 2, 'python', 'python3.7', True, False]
-------
[1, 100, 'python', 200, True, False]
--------
Traceback (most recent call last):
  File "/Users/apple/Desktop/python3/python20.py", line 9, in <module>
    a[1:5:2] = '100'
ValueError: attempt to assign sequence of size 3 to extended slice of size 2

序列相加

python支持两种相同类型的序列使用“+”运算符进行相加。 但是不会去除重复的元素。 类型相同指的是要不“+”都是列表。要不都是元组或者其他相同的数据类型

a = [1, 2, 'python', 'python3.7', True, False]
b = ['今天会下雨', 1, 'a']
print(a + b)

[1, 2, 'python', 'python3.7', True, False, '今天会下雨', 1, 'a']

序列相乘

用“*”可以生成多个相同元素的列表

a = [1, 2, 'python', 'python3.7', True, False]
print(a * 5)

[1, 2, 'python', 'python3.7', True, False, 1, 2, 'python', 'python3.7', True, False, 1, 2, 'python', 'python3.7', True, False, 1, 2, 'python', 'python3.7', True, False, 1, 2, 'python', 'python3.7', True, False]

检查元素是否包含在序列中

in关键字可以检查元素是否在列表中。存在返回True不存在返回False

a = [1, 2, 'python', 'python3.7', True, False]
print(1 in a)
print(3 in a)

True
False

删除列表

del 关键字可以删除列表。 在实际开发中不经常用到因为python的垃圾回收机制会自动销毁列表

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

del a
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
Traceback (most recent call last):
  File "/Users/apple/Desktop/python3/python20.py", line 6, in <module>
    print(a)
NameError: name 'a' is not defined

del:根据索引值删除元素

del 可以删除列表中的单个元素  参数表示要删除元素的索引值

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

del a[1]
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[1, 'python', 'python3.7', True, False]

del 也可以删除中间一段连续的元素,其中,第一个表示起始索引,第二个表示结束索引。del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素。
 

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

del a[1: 4]
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[1, True, False]

pop():根据索引值删除元素 参数表示索引值。如果不写 index 参数,默认会删除列表中的最后一个元素

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a.pop(1)
print(a)
print('--------')

a.pop()
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[1, 'python', 'python3.7', True, False]
--------
[1, 'python', 'python3.7', True]

remove():根据元素值进行删除   要保证要删除的元素存在列表中

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a.remove("python")
print(a)
print('--------')

a.remove('java')
print(a)


[1, 2, 'python', 'python3.7', True, False]
-------
[1, 2, 'python3.7', True, False]
--------
Traceback (most recent call last):
  File "/Users/apple/Desktop/python3/python20.py", line 9, in <module>
    a.remove('java')
ValueError: list.remove(x): x not in list

clear():删除列表所有元素

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

a.clear()
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[]

append()添加元素

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

#  添加元素
a.append('我喜欢学习')
print(a)
print('--------')

#  添加元组
a.append((1, 2, 3, 4, 5, 6, 7, 'python3'))
print(a)
print('---------')

#  添加列表
a.append(['哈哈哈', 'Jack'])
print(a)


[1, 2, 'python', 'python3.7', True, False]
-------
[1, 2, 'python', 'python3.7', True, False, '我喜欢学习']
--------
[1, 2, 'python', 'python3.7', True, False, '我喜欢学习', (1, 2, 3, 4, 5, 6, 7, 'python3')]
---------
[1, 2, 'python', 'python3.7', True, False, '我喜欢学习', (1, 2, 3, 4, 5, 6, 7, 'python3'), ['哈哈哈', 'Jack']]

extend()方法添加元素

与append()的不同之处在于不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

#  添加元素
a.extend('java')
print(a)
print('--------')

# 追加元组,元祖被拆分成多个元素
a.extend(('java', 'php', 'js'))
print(a)
print('--------')

# 追加列表,列表也被拆分成多个元素
a.extend(['mac', 'phone'])
print(a)


[1, 2, 'python', 'python3.7', True, False]
-------
[1, 2, 'python', 'python3.7', True, False, 'j', 'a', 'v', 'a']
--------
[1, 2, 'python', 'python3.7', True, False, 'j', 'a', 'v', 'a', 'java', 'php', 'js']
--------
[1, 2, 'python', 'python3.7', True, False, 'j', 'a', 'v', 'a', 'java', 'php', 'js', 'mac', 'phone']

insert()给列表指定的位置添加元素

该方法可以携带两个参数。第一个参数表示插入的位置。第二个参数表示要插入的元素。 在插入元组等时和append方法一样会将其视为一个整体

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

# 插入元素
a.insert(2, 'java')
print(a)
print('--------')

# 插入元组,整个元祖被当成一个元素
a.insert(4, (1, 2, 4, 'c'))
print(a)
print('---------')

# 插入列表,整个列表被当成一个元素
a.insert(1,[100, True, 'es6'])
print(a)
print('---------')

# 插入字符串,整个字符串被当成一个元素
a.insert(6, 'hello ')
print(a)

[1, 2, 'python', 'python3.7', True, False]
-------
[1, 2, 'java', 'python', 'python3.7', True, False]
--------
[1, 2, 'java', 'python', (1, 2, 4, 'c'), 'python3.7', True, False]
---------
[1, [100, True, 'es6'], 2, 'java', 'python', (1, 2, 4, 'c'), 'python3.7', True, False]
---------
[1, [100, True, 'es6'], 2, 'java', 'python', (1, 2, 4, 'c'), 'hello ', 'python3.7', True, False]

index() 方法用于检查元素在列表中出现的位置。 如果存在则返回元素的位置。 否则会报错。该方法有三个参数。 第一个参数表示要查找的元素。第二个元素表示开始的位置。 第三个表示结束的位置。

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

# #检索列表中的所有元素
print(a.index("python"))
print('--------')

# 检索1-4之间的元素
print(a.index(2, 1, 4))
print("---------")

# 检查3以后所有的元素
print(a.index(False, 3))
print('----------')

# 检查不存在的元素
print(a.index('java'))


[1, 2, 'python', 'python3.7', True, False]
-------
2
--------
1
---------
5
----------
Traceback (most recent call last):
  File "/Users/apple/Desktop/python3/python20.py", line 18, in <module>
    print(a.index('java'))
ValueError: 'java' is not in list

count()方法返回元素在列表中出现的次数。如果返回0则表示元素不存在。 该方法因此也被用检查列表中是否存在某个元素

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

print(a.count(2))
print('---------')
print(a.count("java"))

[1, 2, 'python', 'python3.7', True, False]
-------
1
---------
0

len()计算序列的长度,即返回序列中包含多少个元素。

a = [1, 2, 'python', 'python3.7', True, False]
print(a)
print('-------')

print(len(a))


[1, 2, 'python', 'python3.7', True, False]
-------
6

max()求最大值

a = [1, 2, 100, 300, 4000]
print(a)
print('-------')

print(max(a))

4000

min()求最小值

a = [1, 2, 100, 300, 4000]
print(a)
print('-------')

print(min(a))

1

list()将序列转为列表

str = 'java'
print(list(str))

['j', 'a', 'v', 'a']

sun()列表求和

a = [1, 2, 100, 300, 4000]
print(a)
print('-------')

print(sum(a))

[1, 2, 100, 300, 4000]
-------
4403

sorted()排序

a = ["a", "java", "python", 'f', 'z']
print(a)
print('-------')

print(sorted(a))

['a', 'java', 'python', 'f', 'z']
-------
['a', 'f', 'java', 'python', 'z']

其他方法归纳

len() 计算序列的长度,即返回序列中包含多少个元素。
max() 找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。
min() 找出序列中的最小元素。
list() 将序列转换为列表。
str() 将序列转换为字符串。
sum() 计算元素和。
sorted() 对元素进行排序。
reversed() 反向序列中的元素。
enumerate() 将序列组合为一个索引序列,多用在 for 循环中
发布了26 篇原创文章 · 获赞 79 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_25502269/article/details/105469728