python数据类型之列表

python列表

  • 作用:多个装备,多个爱好,多门课程,多个女朋友等
  • 定义:[]内可以有多个任意类型的值,逗号分隔

python列表索引及切片

列表是有序的,可通过下标查看列表中的元素
lits1 = [1,2,3,4,5,6,7,8,9]

lis[start,end,step] 遵循左闭右开原则(末端不包含)
start 元素下标起始位置,包含对应元素值,不传默认为首部
end 元素下标结束位置,不包含对应元素值,不传默认为最末端
step 步长,不传默认为1,下标对应往上+1,直到到结束位置

lits1 = [1,2,3,4,5,6,7,8,9]
print(lits1[0])
print(lits1[0:8:2])
print(lits1[1:])  # 起始位置为
print(lits1[::])
print(lits1[:8])

运行结果

列表方法

可通过help()-->list,进行查看列表方法

或通过dir(list)查看列表方法

list()

定义一个列表,可将其他类型转为列表

b = 
a = '12345'
print(list(a))

运行结果

append()

append() 方法用于在列表末尾添加新的对象。该方法无返回值,但是会修改原来的列表。

list.append(obj)

  • obj -- 添加到列表末尾的对象。
lis1 = ['huawei', 'google']
lis1.append('amz')
print(lis1.append('amz'))  # 打印append方法为None
print(lis1)  # 添加了几次就在列表中增加几次

运行结果

clear()

clear() 函数用于清空列表,类似于 del a[:],该方法没有返回值。

lis1 = ['加油华为','加油中国']
print(lis1.clear())
print(lis1)

运行结果

copy() & deepcopy()

字典 copy() 函数返回一个字典的浅复制,即浅拷贝,对应的也有deepcopy(),该方法和浅拷贝使用方法相同,均为拷贝数据,区别为一个是浅拷贝,只拷贝外部数据,外部内存地址不同,内部数据的内存地址共享,深拷贝拷贝外部数据和内部数据,若内部数据为可变类型则指向不同,不可变则指向相同

如下可看出,拷贝对象b的值与被拷贝对象a相同,但是内存指向不同,但是这里需注意:浅拷贝是拷贝外部的内存地址以及对应的值,内部数据不会进行拷贝,通俗的讲:浅拷贝时,a,b外部数据内存地址不同,但是内部数据的内存地址共享,且内部数据不区分是否可变类型,内部数据为可变类型或不可变类型,a,b指向的内存地址均指向同一地址
深拷贝和浅拷贝的区别在于,a,b外部数据地址指向不同,内部数据若为不可变类型,则指向同一地址,若为可变类型则指向不可内存地址

a = [1,2,3,[5,6,7]]
b = a.copy()
print('外部数据:\na的内存地址为%s \nb的内存地址为%s'%(id(a),id(b)))
print(a,b)
print('内部数据为不可变类型:\na的内存地址为%s \nb的内存地址为%s'%(id(a[1]),id(b[1])))
print('内部数据为可变类型:\na的内存地址为%s \nb的内存地址为%s'%(id(a[3]),id(b[3])))

import copy
print('='*50)
a = [1,2,3,[5,6,7]]
b = copy.deepcopy(a)
print('外部数据:\na的内存地址为%s \nb的内存地址为%s'%(id(a),id(b)))
print(a,b)
print('内部数据为不可变类型:\na的内存地址为%s \nb的内存地址为%s'%(id(a[1]),id(b[1])))
print('内部数据为可变类型:\na的内存地址为%s \nb的内存地址为%s'%(id(a[3]),id(b[3])))

运行结果

count()

同字符串中count()方法一致,统计元素在列表中出现的次数,有则返回对应出现的次数,int类型,无则返回0

a = [1,1,1,2,3,4,5]
print(a.count(1))
print((a.count('a')))

extend()

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

list.extend(seq)

  • seq -- 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。
a = ['hello','鸿蒙']
b = {'a':1,'b':2}
ff = a.extend(b)
print(ff)
print(a)

运行结果

index()

index方法同字符串使用相同,检查元素是否在列表中,可指定范围,有则返回元素第一次出现的索引值,若没有则报错

ll = [1,1,2,3,4,5]
print(ll.index(1))
print(ll.index(''))

运行结果

insert()

insert() 函数用于将指定对象插入列表的指定位置。该方法没有返回值,但会在列表指定位置插入对象。

list.insert(index, obj)

  • index -- 对象 obj 需要插入的索引位置。
  • obj -- 要插入列表中的对象。
aList = [123, 'xyz', 'zara', 'abc']
aList.insert(3, 2009)
print(aList)

运行结果

pop()

pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。该方法返回从列表中移除的元素对象。

list.pop([index=-1])

  • index -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
list1 = ['Google', 'Runoob', 'Taobao']
print(list1.pop())
print ("列表现在为 : ", list1)
print(list1.pop(1))
print ("列表现在为 : ", list1)

运行结果

remove()

remove() 函数用于移除列表中某个值的第一个匹配项。该方法没有返回值但是会移除列表中的某个值的第一个匹配项。

list.remove(obj)

  • obj -- 列表中要移除的对象。
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
print(list1.remove('Taobao'))
print ("列表现在为 : ", list1)
list1.remove('Baidu')
print ("列表现在为 : ", list1)

运行结果

reverse()

reversed 函数返回一个反转的迭代器。该方法无返回值,但是会修改原来的列表。

a = [1,2,3,4,5]
print("原数据为:%s"%a)
print(a.reverse())
print("翻转后的数据为:%s"%a)

运行结果

sort()

sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。该方法没有返回值,但是会对列表的对象进行排序。

list.sort( key=None, reverse=False)

  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
    key用的较少,会用reverse升序降序排序即可
b = [99,78,1,2,3,4,5]
b.sort()
print(b)

c = ['a','c','b','d']
c.sort()
print(c)

# a = [1,2,3,'a','b','c']
# a.sort()  # 不能同时对不同数据类型的数据进行排序,只能对同一种类型的数据进行排序,否则报错 TypeError: '<' not supported between instances of 'str' and 'int'

运行结果

posted @ 2021-06-04 18:11  happy-winds  阅读(96)  评论(0编辑  收藏  举报