python 数据类型之列表

简介: python 数据类型之列表

今天介绍python数据类型中的list

  • int,整数类型(整形)
  • bool,布尔类型
  • str,字符串类型
  • list,列表类型
  • tuple,元组类型
  • dict,字典类型
  • set,集合类型
  • float,浮点类型(浮点型)

1、什么是list

列表(list),是一个有序可变的容器,在里面可以存放多个不同类型的元素

不可变类型:字符串、布尔、整型(已最小,内部数据无法进行修改)

可变类型:列表(内部数据元素可以修改)

2、创建列表

列表的数据项不需要具有相同的类型,它可以作为一个方括号内的逗号分隔值出现。

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

list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']

3、获取长度

len(list)

list1 = ['Google', 'Runoob', 'Taobao']
print (len(list1))
list2=list(range(5)) # 创建一个 0-4 的列表
print (len(list2))

4、列表元素最大值

max函数

 
 
list1, list2 = ['Google', 'Runoob', 'Taobao'], [456, 700, 200]
 
print ("list1 最大元素值 : ", max(list1))
print ("list2 最大元素值 : ", max(list2))

5、列表元素最小值

min()函数


 
list1, list2 = ['Google', 'Runoob', 'Taobao'], [456, 700, 200]
 
print ("list1 最小元素值 : ", min(list1))
print ("list2 最小元素值 : ", min(list2))

6、将元组或字符串转化为列表

list() 方法用于将元组或字符串转换为列表。

注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

aTuple = (123, 'Google', 'Runoob', 'Taobao')
list1 = list(aTuple)
print ("列表元素 : ", list1)
 
str="Hello World"
list2=list(str)
print ("列表元素 : ", list2)

列表元素 :  [123, 'Google', 'Runoob', 'Taobao']

列表元素 :  ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

7、索引操作一个元素

与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。

通过索引列表可以进行截取、组合等操作。

# 读
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( user_list[0] )
print( user_list[2] )
print( user_list[3] ) # 报错
 
# 改
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
user_list[0] = "武沛齐"
print(user_list) # ["武沛齐","刘华强",'尼古拉斯赵四']
 
# 删
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
del user_list[1]
 
user_list.remove("刘华强")
ele = user_list.pop(1)

8、切片:多个索引操作元素(很少用)

# 读
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
 
print( user_list[0:2] ) # ["范德彪","刘华强"]
print( user_list[1:] )
print( user_list[:-1] )
 
# 改
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
user_list[0:2] = [11, 22, 33, 44]
print(user_list) # 输出 [11, 22, 33, 44, '尼古拉斯赵四']
 
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
user_list[2:] = [11, 22, 33, 44]
print(user_list) # 输出 ['范德彪', '刘华强', 11, 22, 33, 44]
 
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
user_list[3:] = [11, 22, 33, 44]
print(user_list) # 输出 ['范德彪', '刘华强', '尼古拉斯赵四', 11, 22, 33, 44]
 
 
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
user_list[10000:] = [11, 22, 33, 44]
print(user_list) # 输出 ['范德彪', '刘华强', '尼古拉斯赵四', 11, 22, 33, 44]
 
 
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
user_list[-10000:1] = [11, 22, 33, 44]
print(user_list) # 输出 [11, 22, 33, 44, '刘华强', '尼古拉斯赵四']
 
# 删
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
del user_list[1:]
print(user_list) # 输出 ['范德彪']
 
 
# 步长
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
#              0        1        2          3       4
print( user_list[1:4:2] )
print( user_list[0::2] )
print( user_list[1::2] )
print( user_list[4:1:-1] )

9、查找某个值第一个匹配项的索引位置

index() 函数用于从列表中找出某个值第一个匹配项的索引位置。

index()方法语法:list.index(x[, start[, end]])

  • x-- 查找的对象。
  • start-- 可选,查找的起始位置。
  • end-- 可选,查找的结束位置。

该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。

list1 = ['Google', 'Runoob', 'Taobao']
print ('Runoob 索引值为', list1.index('Runoob'))
print ('Taobao 索引值为', list1.index('Taobao'))

输出

Runoob 索引值为 1

Taobao 索引值为 2

list1 = ['Google', 'Runoob', 'Taobao', 'Facebook', 'QQ']
# 从指定位置开始搜索
print ('Runoob 索引值为', list1.index('Runoob',1))

输出

Runoob 索引值为 1

10、元素是否在列表中

运算符in包含

由于列表内部是由多个元素组成,可以通过in来判断元素是否在列表中

user_list = ["狗子","二蛋","沙雕","alex"] 
result = "alex" in user_list
# result = "alex" not in user_list
print(result) #  True
 
if "alex" in user_list:
    print("在,把他删除")
    user_list.remove("alex")
else:
    print("不在")

11、列表循环

user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
for item in user_list:
  print(item)
 
# 根据索引循环
for index in range( len(user_list) ):
    item = user_index[index]
    print(item)

循环的过程中对数据进行删除会踩坑

# 错误方式, 有坑,结果不是你想要的。
 
user_list = ["刘的话", "范德彪", "刘华强", '刘尼古拉斯赵四', "宋小宝", "刘能"]
for item in user_list:
    if item.startswith("刘"):
        user_list.remove(item)
        
print(user_list)
# 正确方式,倒着删除。
user_list = ["刘的话", "范德彪", "刘华强", '刘尼古拉斯赵四', "宋小宝", "刘能"]
for index in range(len(user_list) - 1, -1, -1):
    item = user_list[index]
    if item.startswith("刘"):
        user_list.remove(item)
print(user_list)

12、添加、插入元素

1、list.append(obj) 在列表末尾添加新的对象

list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')
print ("更新后的列表 : ", list1)

更新后的列表 :  ['Google', 'Runoob', 'Taobao', 'Baidu']

队列是一种先进先出(FIFO)的数据结构,我们可以使用列表来实现队列的基本功能。

  • append() 方法向队列的末尾添加一个元素。
  • pop() 方法从队列的开头删除一个元素并返回它。
queue = []
 
# 添加元素到队列的末尾
queue.append('A')
queue.append('B')
queue.append('C')
 
# 从队列的开头删除元素并返回
print(queue.pop(0))  # A
print(queue.pop(0))  # B
print(queue.pop(0))  # C

创建了一个空的列表作为队列,然后使用 append() 方法向队列的末尾添加了三个元素,使用 pop() 方法从队列的开头删除元素并返回它们。由于队列是一个先进先出的数据结构,所以得到的输出结果是 'A'、'B' 和 'C'。

2、extend() 函数

用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

  • seq -- 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。

该方法没有返回值,但会在已存在的列表中添加新的列表内容。

list1 = ['Google', 'Runoob', 'Taobao']
list2=list(range(5)) # 创建 0-4 的列表
list1.extend(list2)  # 扩展列表
print ("扩展后的列表:", list1)

扩展后的列表: ['Google', 'Runoob', 'Taobao', 0, 1, 2, 3, 4]


 
# 语言列表
language = ['French', 'English', 'German']
 
# 元组
language_tuple = ('Spanish', 'Portuguese')
 
# 集合
language_set = {'Chinese', 'Japanese'}
 
# 添加元组元素到列表末尾
language.extend(language_tuple)
 
print('新列表: ', language)
 
# 添加集合元素到列表末尾
language.extend(language_set)
 
print('新列表: ', language)

新列表:  ['French', 'English', 'German', 'Spanish', 'Portuguese']

新列表:  ['French', 'English', 'German', 'Spanish', 'Portuguese', 'Chinese', 'Japanese']

3、将对象插入列表

insert() 函数用于将指定对象插入列表的指定位置。

insert()方法语法:list.insert(index, obj)

  • index -- 对象obj需要插入的索引位置。
  • obj -- 要插入列表中的对象。

该方法没有返回值,但会在列表指定位置插入对象。

list1 = ['Google', 'Runoob', 'Taobao']
list1.insert(1, 'Baidu')
print ('列表插入元素后为 : ', list1)

列表插入元素后为 :  ['Google', 'Baidu', 'Runoob', 'Taobao']

13、删除、移除

1、pop() 函数

用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

pop()方法语法:list.pop([index=-1])

  • index -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。

该方法返回从列表中移除的元素对象。

list1 = ['Google', 'Runoob', 'Taobao']
list1.pop()
print ("列表现在为 : ", list1)
list1.pop(1)
print ("列表现在为 : ", list1)

列表现在为 :  ['Google', 'Runoob']

列表现在为 :  ['Google']

2、移除列表中某个值的第一个匹配项

remove() 函数用于移除列表中某个值的第一个匹配项。在原列表中根据值删除(从左到右找到第一个删除)【慎用,里面没有会报错】

remove()方法语法:list.remove(obj)

  • obj -- 列表中要移除的对象。

该方法没有返回值但是会移除列表中的某个值的第一个匹配项。

list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.remove('Taobao')
print ("列表现在为 : ", list1)
list1.remove('Baidu')
print ("列表现在为 : ", list1)

列表现在为 :  ['Google', 'Runoob', 'Baidu']

列表现在为 :  ['Google', 'Runoob']

3、del语句

list = ['Google', 'Runoob', 1997, 2000]
 
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)
 
结果
原始列表 :  ['Google', 'Runoob', 1997, 2000]
删除第三个元素 :  ['Google', 'Runoob', 2000]

4、clear() 函数用于清空列表,类似于 del a[:]

list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.clear()
print ("列表清空后 : ", list1)

列表清空后 :  []

14、更新列表

list = ['Google', 'Runoob', 1997, 2000]
 
print ("第三个元素为 : ", list[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2])
 
list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')
print ("更新后的列表 : ", list1)

结果

第三个元素为 :  1997

更新后的第三个元素为 :  2001

更新后的列表 :  ['Google', 'Runoob', 'Taobao', 'Baidu']


15、截取与拼接

# 列表截取
L=['Google', 'Runoob', 'Taobao']
L[2]  # 'Taobao'
L[-2] #'Runoob'
L[1:] # ['Runoob', 'Taobao']
 
# 列表拼接
squares = [1, 4, 9, 16, 25]
squares += [36, 49, 64, 81, 100]
squares # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

16、排序

sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

sort()方法语法:list.sort( key=None, reverse=False)

  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
 
aList.sort()
print ( "List : ", aList) # List :  ['Facebook', 'Google', 'Runoob', 'Taobao']
 
 
#降序输出列表
# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
 
# 降序
vowels.sort(reverse=True)
 
# 输出结果
print ( '降序输出:', vowels ) # 降序输出: ['u', 'o', 'i', 'e', 'a']

通过指定列表中的元素排序来输出列表

# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]
 
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
 
# 指定第二个元素排序
random.sort(key=takeSecond)
 
# 输出类别
print ('排序列表:', random) # 排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]

17、列表比较

列表比较需要引入 operator 模块的 eq 方法

# 导入 operator 模块
import operator
 
a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b))  # operator.eq(a,b):  False
print("operator.eq(c,b): ", operator.eq(c,b))  # operator.eq(c,b):  True

18、复制列表

list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list2 = list1.copy()
print ("list2 列表: ", list2) # list2 列表:  ['Google', 'Runoob', 'Taobao', 'Baidu']

19、列表反向

list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.reverse()
print ("列表反转后: ", list1) # 列表反转后:  ['Baidu', 'Taobao', 'Runoob', 'Google']

20、统计元素出现次数

count() 方法用于统计某个元素在列表中出现的次数。

 
 
aList = [123, 'Google', 'Runoob', 'Taobao', 123];
 
print ("123 元素个数 : ", aList.count(123))
print ("Runoob 元素个数 : ", aList.count('Runoob'))

123 元素个数 :  2

Runoob 元素个数 :  1


21、嵌套列表

列表属于容器,内部可以存放各种数据,所以他也支持列表的嵌套,如:

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,[999,123],33,44],"宋小宝" ]

对于嵌套的值,可以根据之前学习的索引知识点来进行学习

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝" ]
 
print( data[0] ) # "谢广坤"
print( data[1] ) # ["海燕","赵本山"]
print( data[0][2] ) # "坤"
print( data[1][-1] ) # "赵本山"
 
data.append(666)
print(data) # [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝",666]
 
data[1].append("谢大脚")
print(data) # [ "谢广坤",["海燕","赵本山","谢大脚"],True,[11,22,33,44],"宋小宝",666 ]
 
 
del data[-2]
print(data) # [ "谢广坤",["海燕","赵本山","谢大脚"],True,[11,22,33,44],666 ]
 
 
data[-2][1] = "alex"
print(data) # [ "谢广坤",["海燕","赵本山","谢大脚"],True,[11,"alex",33,44],666 ]
 
 
data[1][0:2] = [999,666]
print(data) # [ "谢广坤",[999,666,"谢大脚"],True,[11,"alex",33,44],666 ]

22、相加

两个列表相加获取生成一个新的列表。

data = ["赵四","刘能"] + ["宋晓峰","范德彪"]
print(data) # ["赵四","刘能","宋晓峰","范德彪"]
 
v1 = ["赵四","刘能"]
v2 = ["宋晓峰","范德彪"]
v3 = v1 + v2
print(v3) # ["赵四","刘能","宋晓峰","范德彪"]

23、相乘

列表*整型 将列表中的元素再创建N份并生成一个新的列表。

data = ["赵四","刘能"] * 2
print(data) # ["赵四","刘能","赵四","刘能"]
 
v1 = ["赵四","刘能"]
v2 = v1 * 2
print(v1) # ["赵四","刘能"]
print(v2) # ["赵四","刘能","赵四","刘能"]

24、转换

#int、bool无法转换成列表 
 
#str 
name = "测试"
data = list(name)  # ["测","试"]
print(data)
 
#超前
 
v1 = (11,22,33,44) # 元组
vv1 = list(v1)     # 列表 [11,22,33,44]
 
v2 = {"alex","eric","dsb"} # 集合
vv2 = list(v2) # 列表 ["alex","eric","dsb"]


相关文章
|
4天前
|
开发工具 Python
Python列表和字典前面为什么要加星号( )?_python一个 代表列表
Python列表和字典前面为什么要加星号( )?_python一个 代表列表
|
9天前
|
索引 Python
Python 中寻找列表最大值位置的方法
本文介绍了Python中找列表最大值及其位置的三种方法:1) 使用内置`max()`和`index()`函数;2) 通过循环遍历;3) 利用`enumerate()`函数和生成器表达式。每种方法均附有示例代码,其中`enumerate()`方法在保证效率的同时代码更简洁。
41 2
|
9天前
|
存储 运维 数据挖掘
Python列表中每个元素前面连续重复次数的数列统计
Python列表中每个元素前面连续重复次数的数列统计
15 1
|
9天前
|
存储 JSON 数据库
Python中列表数据的保存与读取:以txt文件为例
Python中列表数据的保存与读取:以txt文件为例
23 2
|
3天前
|
存储 索引 Python
Python 列表
Python 列表
5 0
|
3天前
|
存储 数据处理 索引
Python基础教程——列表(List)
Python基础教程——列表(List)
|
3天前
|
索引 Python 容器
Python数据结构——列表
Python数据结构——列表
5 0
|
3天前
|
存储 索引 Python
Python基础 笔记(七) 容器--字符串、列表
Python基础 笔记(七) 容器--字符串、列表
16 4
|
3天前
|
Python
Python基础 笔记(四) 数据类型转换及运算符
Python基础 笔记(四) 数据类型转换及运算符
19 3
|
4天前
|
Python
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新