# -*- coding: utf-8 -*-
'''
内置数据结构 --- list
'''
'''
list(列表)
- 一组有顺序的数据的组合
'''
#创建列表
l1 = []
print(type(l1))
print(l1)
l2 = [100]
print(type(l2))
print(l2)
l3 = [1, 5, 7, 9]
print(type(l3))
print(l3)
l4 = list()
print(type(l4))
print(l4)
#列表操作
'''
1、访问
a、使用下表操作(索引)
b、列表的位置从0开始
'''
l = [23, 4, 67, 9, 3]
print("l[1] is {0}.".format(l[1]))
'''
2、分片操作
a、对列表进行任意一段的截取l[:],
包含左边的下标值,不包含右边的下标值
下标值可以为空,如果不写,左边下标值默认为0,右边下标值为最大数加一
b、分片可以控制增长幅度,默认为1,l[::]
c、下标值和增长幅度都可以为负数
规定:最后一个元素下标为-1
默认分片总是从左向右截取,即分片左边的值一定小于右边的值
d、分片操作是生成了一个新的list
'''
#a、
ll = [23, 4, 67, 9, 3]
print(ll[1:3])
print(ll[:3])
print(ll[1:])
print(ll[:])
#b、
lll = [23, 2, 6, 19, 4, 67, 9, 3]
print(lll[1:6:1])
print(lll[1:6:2])
#c、规定
llll = [23, 2, 6, 19, 4, 67, 9, 3]
print(llll[-1:-7:1])
#该方法为将一个list进行正反颠倒提供了一种思路
print(llll[-1:-7:-1])
print(llll[-7:-1:1])
print(llll[-7:-1:2])
print(llll[-7:-1:-1])
print(llll[-7:-1:-2])
#d、
llt1 = [23, 4, 67, 7, 8, 34, 56]
print(id(llt1))
llt2 = llt1[:]
print(id(llt2))
llt3 = llt2
print(id(llt3))
llt1[1] = 100
print(llt1)
print(llt2)
llt2[1] = 100
print(llt2)
print(llt3)
'''
运行结果:
1717391215048
1717362646344
1717362646344
[23, 100, 67, 7, 8, 34, 56]
[23, 4, 67, 7, 8, 34, 56]
[23, 100, 67, 7, 8, 34, 56]
[23, 100, 67, 7, 8, 34, 56]
'''
#d、一个关于id的例子
a = 100
c = a
print("the id of a is {0}, the value is {1}.".format(id(a), a))
print("the id of c is {0}, the value is {1}.".format(id(c), c))
a = 101
print("the id of a is {0}, the value is {1}.".format(id(a), a))
print("the id of c is {0}, the value is {1}.".format(id(c), c))
'''
3、删除
a、del 删除不会新建列表
'''
la = [11, 33, 44, 55, 66]
del la[2]
print(la)
'''
4、列表运算操作
a、使用加号链接两个列表
b、使用乘号操作列表
'''
a = [1, 4, 5, 6, 7]
b = [11, 14, 15, 16, 17]
d = ['a', 'b', 'c']
c = a + b + d
print(c)
e = d * 5
print(e)
'''
5、成员资格运算
判断一个元素是否在list里边
'''
lista = [1, 56, 89, 23, 15]
b = 8
c = b in lista
print(c)
e = 23
c = e in lista
print(c)
'''
6、遍历操作
for while(一般不用)
'''
listaa = [23, 78, 54, 65, 22, 66]
for i in listaa:
print(i)
'''
7、双层列表操作
for while(一般不用)
k\v\w个数应该跟解包出来的变量个数一致
'''
laa = [["one", 1], ["two", 2], ["three", 3]]
for k,v in laa:
print(k, "-----", v)
laa = [["one", 1, "yi"], ["two", 2, "er"], ["three", 3, "san"]]
for k,v,w in laa:
print(k, "-----", v, "-----", w)
'''
8、列表内涵:list content
通过简单方法创建列表
'''
a = ['a', 'b', 'c']
#用list a创建一个list b
#对于a中的所有元素,逐个放入新列表b中
b = [i for i in a]
print(b)
#对于a中所有的元素乘以10,生成一个新的list
a = [1, 2, 3, 4]
b = [i*10 for i in a]
print(b)
#使用偶数生成新的列表
a = [x for x in range(1, 35)]
print(a)
b = [m for m in a if m % 2 == 0]
print(b)
'''
9、关于列表的常用函数
len: 求列表长度
max: 求列表中的最大值
min: 求列表中的最小值
append: 插入一个内容,在末尾追加
insert: 指定位置插入
del: 删除
pop: 取出最后一个元素
remove: 在列表中删除指定的值的元素
clear: 清空
reverse: 反转,原地反转
extend: 扩展列表,两个列表,把一个直接接在另一个后面
count: 查找列表中指定值或元素的个数
'''
a = [x for x in range(1, 10)]
print(len(a))
print(max(a))
print(min(a))
a.append(100)
print(a)
a.insert(3, 26)
print(a)
del a[5]
print(a)
last_ele = a.pop()
print(last_ele)
print(a)
print(id(a))
a.remove(4)
print(a)
print(id(a))
a.clear()
print(a)
print(id(a))
a = [1, 2, 3, 4, 5]
print(a)
print(id(a))
a.reverse()
print(a)
print(id(a))
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
print(id(a))
a.extend(b)
print(a)
print(id(a))
print(a)
a.append(8)
a_num= a.count(8)
print(a_num)
'''
10、将其他格式转换成list
'''
a = [1, 2, 3]
print(list(a))
s = "I like reading!"
print(list(s))
'''
11、一个关于变量和list的示例
表现不同是传值和传址的问题
'''
def a(n):
n[2] = 300
print(n)
return None
def b(n):
n += 100
print(n)
return None
an = [31, 24, 35, 45, 58, 16]
bn = 21
print(an)
a(an)
print(an)
print(bn)
b(bn)
print(bn)
'''
12、copy函数(浅拷贝) “浅拷贝”和“深拷贝” 传值和传址的问题
深拷贝和浅拷贝的区别,浅拷贝只拷贝一层内容
'''
a = [1, 3, 5, 7, 25, 27]
print(a)
#list类型,简单赋值操作,是传地址
b = a
b[3] = 222
print(a)
print(b)
print("*" * 30)
#为了解决以上问题,使用copy函数
b = a.copy()
print(a)
print(id(a))
print(b)
print(id(b))
print("*" * 30)
b[3] = 333
print(a)
print(b)
'''
-----------运行结果-----------
[1, 3, 5, 7, 25, 27]
[1, 3, 5, 222, 25, 27]
[1, 3, 5, 222, 25, 27]
******************************
[1, 3, 5, 222, 25, 27]
1717395753096
[1, 3, 5, 222, 25, 27]
1717395175496
******************************
[1, 3, 5, 222, 25, 27]
[1, 3, 5, 333, 25, 27]
'''
#深拷贝和浅拷贝的区别
#下例说明浅拷贝只拷贝一层内容
a = [1, 2, 3, [10, 20, 30]]
b = a.copy()
print(id(a))
print(id(b))
print(id(a[3]))
print(id(b[3]))
a[3][2] = 666
print(a)
print(b)
python---內建数据结构list
最新推荐文章于 2025-02-24 22:26:33 发布