Python 学习笔记 -- 容器类型

目录

一、list(列表)

列表的新增     append --  往末尾添加一个元素

列表的删除    pop          --    删除最后一个元素

列表的修改

 统计类

列表的拷贝copy

列表的反转

列表的排序

 列表成员关系的判断

 列表的遍历    enumerate  -- 返回列表的下标和值

练习:


一、list(列表)

特征:

1.是有序的项目集合

是有序项目集合:

每个元素都有相应的下标

>>> lst = ["a", "b", "c", "d", "e"]
>>> lst[1]
'b'

2.可变数据类型

当该数据类型对应的变量的值发生了变化时,它对应的内存地址不发生改变。

lst = ["ab", "123"]
#查看lst的内存地址
id(lst)
2254211132672
lst[1]="xxyy"
#改变元素之后内存地址不发生变化,是可变数据类型
id(lst)
2254211132672

3.可存放任何数据类型

lst = ["a", 3.4, 4, [1], print]
lst
['a', 3.4, 4, [1], <built-in function print>]

传递可迭代对象(能被for循环遍历)

>>> lst = []
>>> type(lst)
<class 'list'>
>>> lst1 = list("abc")
>>> lst1
['a', 'b', 'c']
>>>

列表的新增     append --  往末尾添加一个元素

                       insert    --  指定位置插入

                       extend  -- 传递进去的元素是可迭代元素

#append的使用
lst = ["aa", "12", "bb"]
lst.append("xxxx")
lst
['aa', '12', 'bb', 'xxxx']
lst.append([1,2])
lst
['aa', '12', 'bb', 'xxxx', [1, 2]]

#insert的使用
lst
['aa', '12', 'bb', 'xxxx', [1, 2]]
lst.insert(2,"***")
lst
['aa', '12', '***', 'bb', 'xxxx', [1, 2]]

#extend的使用
lst
['aa', '12', '***', 'bb', 'xxxx', [1, 2]]
lst.extend("qwer")
lst
['aa', '12', '***', 'bb', 'xxxx', [1, 2], 'q', 'w', 'e', 'r']

列表的删除    pop          --    删除最后一个元素

                      remove    --    删除指定元素,根据元素删除

                      del           --    只要能够通过下标切出来都可以使用del删除

                      clear        --    清空(全部删除)

>>>lst = ["a", "b", 1, 2, "c", "d"]
>>>lst.pop()  删除最后一个元素
>>>'d'
>>>result = lst.pop()
>>>result
>>>'c'
>>>lst.pop(2)  删除指定下标的元素,根据下标删
>>>1
>>>lst.remove("b")  删除指定元素,根据元素删
>>>lst
>>>['a', 2]

>>>lst = ["a", "b", "c", "d", "e"]
>>>lst[2:]     切片,切下标为2之后的数字
>>>['c', 'd', 'e']
>>>del lst[2:]   只要能通过下标切出来都可以用del删除
>>>lst
>>>['a', 'b']
>>>lst.clear()  清空  --  全部删除
>>>lst
>>>[]

列表的修改

 

>>> lst = ["a", "b", "c", "d", "e", "f"]
>>> lst[3] = "xxx"  将下标为3字符的改为xxx
>>> lst
>>> ['a', 'b', 'c', 'xxx', 'e', 'f']
>>> lst[2:5]
>>> ['c', 'xxx', 'e']
>>> lst[2:5] = "abc"  将字符下标为[2,5)的字符改为abc  赋值对象是一个可迭代对象
>>> lst
>>> ['a', 'b', 'a', 'b', 'c', 'f']

 统计类

>>> ['a', 'b', 'a', 'b', 'c', 'f']
>>> len(lst)
>>> 6
>>> lst.count("a")
>>> 2
>>> lst.index("a")
>>> 0

列表的拷贝copy

 

lst
['a', 'b', 'a', 'b', 'c', 'f']
lst2 = lst    直接赋值--公用一个内存空间--一个改变另外一个也改变
lst2[1] = "***"
lst2
['a', '***', 'a', 'b', 'c', 'f']
lst
['a', '***', 'a', 'b', 'c', 'f']
id(lst)
2254211163392
id(lst2)
2254211163392
lst3 = lst.copy()   拷贝到一个新的内存空间
lst3
['a', '***', 'a', 'b', 'c', 'f']
lat3[1] = "yyy"
lst[1] = "yyy"
lst3
['a', '***', 'a', 'b', 'c', 'f']
lst
['a', 'yyy', 'a', 'b', 'c', 'f']
lst[:]
['a', 'yyy', 'a', 'b', 'c', 'f']
lst4 = lst[:]     相当于拷贝
lst4
['a', 'yyy', 'a', 'b', 'c', 'f']
lst4[1] = "ppp"
lst4
['a', 'ppp', 'a', 'b', 'c', 'f']
lst
['a', 'yyy', 'a', 'b', 'c', 'f']

列表的反转

 

lst
['a', 'yyy', 'a', 'b', 'c', 'f']
lst.reverse()   引用reverse函数
lst
['f', 'c', 'b', 'a', 'yyy', 'a']

列表的排序

lst
['f', 'c', 'b', 'a', 'yyy', 'a']
lst.sort()  list升序
lst
['a', 'a', 'b', 'c', 'f', 'yyy']
lst.sort(reverse = True)   list降序
lst
['yyy', 'f', 'c', 'b', 'a', 'a']

 列表成员关系的判断

lst
['f', 'c', 'b', 'a', 'a', '***']
"f" in lst
True
"f" not in lst
False

 列表的遍历    enumerate  -- 返回列表的下标和值

lst = ["abc", "aa", "xx", "xyz"]

for i in lst:
    print(i)

for k,v in enumerate(lst):
    #有下标和值
    print(f"{k} --> {v}")

练习:

                lst = [3, 5, 1, 6, 7, 34, 9, 2, 6, 8 ]

         从键盘输入一个数  当列表中两数相加为这个数的时候,找出这一组数的下标

#方法一
lst = [3, 5, 1, 6, 7, 34, 9, 2, 6, 8]
result = int(input("please input an number:"))
length = len(lst)
for i in range(0,length):
    for j in range(i, length):
        if lst[i] + lst[j] == result:
            print(f"和为result的数为{lst[i], lst[j]}")
            print(f"下标为:{i ,j}")
    break

#方法二
#使用enumerate函数
for i, j in enumerate(lst):
    num = result - j
    if num in lst[i+1:]:
        v = lst[i+1:].index(num)+i+1
        print(f'相加的两个数为{list[i]}, {lst[v]}')
        print(f'两个数字的下标为{i}, {v}')
        break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值