python容器类型——列表

python容器类型——列表(list)

特点

列表是处理一组有序项目的数据结构

列表可以包含任何类型的对象:字符串、数字甚至其他列表

列表是可变的数据类型

定义

列表通过方括号中用逗号分割的项目

mylist = [1, 2]
print(mylist)
# [1, 2]

print(mylist, type(mylist))
# [1, 2] <class 'list'>

列表可装入python的任何对象

mylist = [1, 'a', 1.1, None, [1,2], False]
print(mylist)
# [1, 'a', 1.1, None, [1, 2], False]

列表的基本操作

索引

通过下标访问列表中的元素,下标从0开始计数,可取出一个元素

print(mylist[3])
# None
print(mylist[-3])
# None

下标不能越界

超出索引值时会报IndexError错误

print(mylist[10])
IndexError                                Traceback (most recent call last)
Input In [20], in <cell line: 1>()
----> 1 print(mylist[10])

IndexError: list index out of range

切片

切片是通过下标访问列表中的元素,切片可以取出一个子列表

img

字符串的切片:split()函数,默认空格为分隔符,切片后放入列表中

mystr = "Hello Cali Today is Sunday"
mylist = mystr.split()
print(mylist, type(mylist))
# ['Hello', 'Cali', 'Today', 'is', 'Sunday'] <class 'list'>

切片包含开始,不包含结束

切片取值 => 没有下标越界问题

print(mylist[2:])
# ['Today', 'is', 'Sunday']

print(mylist[2:5:1])
# ['Today', 'is', 'Sunday']

print(mylist[2:15:1])
# ['Today', 'is', 'Sunday']

输出’Cali’, ‘Hello’

print(mylist, type(mylist))
# ['Hello', 'Cali', 'Today', 'is', 'Sunday'] <class 'list'>

print(mylist[::-1])
# ['Sunday', 'is', 'Today', 'Cali', 'Hello']
print(mylist[1::-1])
# ['Cali', 'Hello']

print(mylist[-4::-1])
# ['Cali', 'Hello']
slice函数

slice函数的用途:生成一个slice对象,相当于可以给要切的内容取个名字。

sub_list = slice(-4,0,-1)
print(mylist[sub_list])
# ['Cali']
练习

img

a = ['apple', 'orange', 123, 0.111, 'cali']

print(a[1:])
# ['orange', 123, 0.111, 'cali']

print(a[2:6])	# 切片可以越界
# [123, 0.111, 'cali']

print(a[1:-3])
# ['orange']

print(a[0], a[-1])
# apple cali

a[:]
# ['apple', 'orange', 123, 0.111, 'cali']

增加

append

在末尾,作为整体追加,类型不限

help(a.append)

Help on built-in function append:

append(object, /) method of builtins.list instance
    Append object to the end of the list.
mylist = [0, 1, 2, 3]
mylist.append("apple")
print(mylist)
# [0, 1, 2, 3, 'apple']

mylist.append([4,5])
print(mylist)
# [0, 1, 2, 3, 'apple', [4, 5]]

使用mylist.append()之后会自动把结果返回给mylist,不需要手动重新赋值

insert

在index位置插入数据, 2个参数(索引,插入的元素)

help(mylist.insert)

Help on built-in function insert:

insert(index, object, /) method of builtins.list instance
    Insert object before index.
mylist.insert(0, "banana")
print(mylist)
# ['banana', 0, 1, 2, 3, 'apple', [4, 5]]

mylist.insert(2, "orange")
print(mylist)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', [4, 5]]
extend

扩展,将1个列表里的内容扩展到另外一个列表里去

只限可转为list的类型( str, list, tuple )

help(a.extend)

Help on built-in function extend:

extend(iterable, /) method of builtins.list instance
    Extend list by appending elements from the iterable.
mylist2 = ["cali", "leimingtao", "xiaowei"]
mylist.extend(mylist2)
print(mylist)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', [4, 5], 'cali', 'leimingtao', 'xiaowei']
mylist.extend("abc")
print(mylist)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', [4, 5], 'cali', 'leimingtao', 'xiaowei', 'a', 'b', 'c']
mylist.extend(12)
print(mylist)
# TypeError: 'int' object is not iterable

int 不是可迭代对象 =》迭代 -》依次从对象中取出元素

extend和+的区别

extend会对mylist做修改

+ 会产生一个新的列表 ,不会对mylist做修改

mylist3=['weihong', 'liyili']
print(mylist+mylist3)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', [4, 5], 'cali', 'leimingtao', 'xiaowei', 'a', 'b', 'c', 'weihong', 'liyili']

print(mylist)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', [4, 5], 'cali', 'leimingtao', 'xiaowei', 'a', 'b', 'c']

使用‘+’时,只能连接两个相同类型的元素

mylist+"abc"
# TypeError: can only concatenate list (not "str") to list

删除

pop

删除元素,默认最后一个(指定index删除)

指定索引

使用pop函数后会返回删除掉的元素

print(mylist)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', [4, 5], 'cali', 'leimingtao', 'xiaowei', 'a', 'b', 'c']

mylist.pop()
# 'c'

mylist.pop(7)
# [4, 5]

print(mylist)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', 'cali', 'leimingtao', 'xiaowei', 'a', 'b']
remove

指定删除的数据

删除指定的元素(要删除的数据不存在时,会出错)

使用remove函数不会返回值

mylist.remove('a')
print(mylist)
# ['banana', 0, 'orange', 1, 2, 3, 'apple', 'cali', 'leimingtao', 'xiaowei', 'b']
mylist.remove('appel')
# ValueError: list.remove(x): x not in list
del

根据下标删除

del是命令,不是内置函数

del是python的一个关键字,用于删除变量(的引用)

del mylist[1]
print(mylist)
# ['banana', 'orange', 1, 2, 3, 'apple', 'cali', 'leimingtao', 'xiaowei', 'b']

del也可以直接删除列表

del mylist3
print(mylist3)
# NameError: name 'mylist3' is not defined
clear

清空列表

print(mylist3)
# ['weihong', 'liyili']

mylist3.clear()
print(mylist3)
# []

修改

修改元素主要是利用下标和切片来修改或增加、删除

直接利用下标修改元素
print(mylist)
# ['banana', 'orange', 1, 2, 3, 'apple', 'cali', 'leimingtao', 'xiaowei', 'b']

mylist[2] = "liu"
print(mylist)
# ['banana', 'orange', 'liu', 2, 3, 'apple', 'cali', 'leimingtao', 'xiaowei', 'b']
用切片修改列表中的元素
mylist[3:5] = ["shenjiemi", "xiejiaxing"]
print(mylist)
# ['banana', 'orange', 'liu', 'shenjiemi', 'xiejiaxing', 'apple', 'cali', 'leimingtao', 'xiaowei', 'b']
也可以使用切片增加列表中的元素
mylist[-1:] = ["lili", "xiaoqian", "xiaoming"]
print(mylist)
# ['banana', 'orange', 'liu', 'shenjiemi', 'xiejiaxing', 'apple', 'cali', 'leimingtao', 'xiaowei', 'lili', 'xiaoqian', 'xiaoming']
使用切片删除列表中的元素
mylist[0:5]=""
print(mylist)
# ['apple', 'cali', 'leimingtao', 'xiaowei', 'lili', 'xiaoqian', 'xiaoming']

mylist[0:5]=[]
print(mylist)
# ['xiaoqian', 'xiaoming']
print(mylist[1:1])

返回的值为空[],此时这个位置在第二个位置

使用切片方法时,字符串是可迭代对象

mylist[1:1]="abc"	# 在第二个位置插入元素
print(mylist)
# ['xiaoqian', 'a', 'b', 'c', 'xiaoming']
mylist[1:1] = "abc"  # 批量在指定位置增加数据
mylist[0:5] = ""    # 批量指定下标的删除数据
print(mylist)
# ['b', 'c', 'xiaoming']

反转

reverse
mylist.reverse()
print(mylist)
# ['xiaoming', 'c', 'b']
切片方法
print(mylist[::-1])
# ['b', 'c', 'xiaoming']

排序

sort

列表中的元素必须是相同类型的才能排序

mylist = [3, 5, 8, 1, -3]
mylist.sort()
print(mylist)
# [-3, 1, 3, 5, 8]

排序之后使用reverse可以使结果反转

mylist.sort(reverse=True)
print(mylist)
# [8, 5, 3, 1, -3]
mylist = ["apple", "orange", "banana"]
mylist.sort()
print(mylist)
# ['apple', 'banana', 'orange']

不同类型的元素排序会报错

mylist = ['a', 1, 2, 3]
mylist.sort()
# TypeError: '<' not supported between instances of 'int' and 'str'

统计

len

计算列表中元素的个数

不用输出,直接返回值

mylist = ['a', 1, 2, 3]
len(mylist)
# 4
count

计算某个元素在列表中出现的次数

print(mylist5)
# ['a', 'b', 'c', 'd', 'a', 'b', 'd', 'java', ['liu', 'cali', 123, 456], 'C', 'a']

mylist5.count('a')
# 3
index

找出某个元素在列表中第一次出现的下标位置

mylist5.index("a")
# 0

mylist5.index("java")
# 7

练习

img

mylist5 = ["python", "java", "C"]

mylist5.append("我是追加")
print(mylist5)
# ['python', 'java', 'C', '我是追加']

mylist5.pop()
# '我是追加'
del mylist5[0]
print(mylist5)
# ['java', 'C']

mylist5.insert(1, ["liu", "cali", 123, 456])
print(mylist5)
# ['java', ['liu', 'cali', 123, 456], 'C']

遍历列表

遍历:依次取出对象中的每一项数据

list是一个可迭代对象(iterable),可以直接用for遍历

print(mylist5)
# ['a', 'b', 'c', 'd', 'a', 'b', 'd', 'java', ['liu', 'cali', 123, 456], 'C', 'a']

for item in mylist5:
    print(item)
    
a
b
c
d
a
b
d
java
['liu', 'cali', 123, 456]
C
a
enumerate

枚举

enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用

for item in enumerate(mylist5):
    print(item)
    
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'a')
(5, 'b')
(6, 'd')
(7, 'java')
(8, ['liu', 'cali', 123, 456])
(9, 'C')
(10, 'a')

判断成员关系

判断列表中是否有某个数据

print(mylist5)
# ['a', 'b', 'c', 'd', 'a', 'b', 'd', 'java', ['liu', 'cali', 123, 456], 'C', 'a']
print("Java" in mylist5)
# False
print("java" in mylist5)
# True

类型转换

list将字符串(str)转列表(list)
mystr = "abc"
print(list(mystr))
# ['a', 'b', 'c']
利用join函数将列表转字符串
mylist = ['a', 'b', 'c']
mystr = "".join(mylist)
print(mystr)
# abc

练习

img

nums = [2, 7, 11, 15]
target = 9
for (i,item) in enumerate(nums):
    for (j,itemj) in enumerate(nums):
        if (item + itemj == target) and i < j:
            result = [i, j]
            print(result)
 
# [0, 1]

ava" in mylist5)

False

print(“java” in mylist5)

True


### 类型转换

#### list将字符串(str)转列表(list) 

```python
mystr = "abc"
print(list(mystr))
# ['a', 'b', 'c']
利用join函数将列表转字符串
mylist = ['a', 'b', 'c']
mystr = "".join(mylist)
print(mystr)
# abc

练习

[外链图片转存中…(img-PeFS6U1S-1649680081422)]

nums = [2, 7, 11, 15]
target = 9
for (i,item) in enumerate(nums):
    for (j,itemj) in enumerate(nums):
        if (item + itemj == target) and i < j:
            result = [i, j]
            print(result)
 
# [0, 1]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值