python---內建数据结构list

本文深入讲解了Python中列表的基本操作,包括创建、访问、分片、删除、运算、成员资格判断、遍历、双层列表操作、列表内涵、常用函数等,并探讨了变量和列表的引用行为以及深浅拷贝的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- 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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值