python列表及其内置函数

列表概念

有序且可变的容器,列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表

列表的表示方法

列表中的数据可以是int,str,list,tuple,dict,set

li = [数据1,数据2,......]

访问列表中的值

和python字符串一样,列表可以通过下标索引进行访问
也可以通过索引列表可以进行截取、组合等操作。

li = ['小张','小川','小王',98,12]
print(li[0])   #小张
print(li[:2])   #['小张', '小川']

列表嵌套

列表与列表,列表与元组之间都是可以相互嵌套的,也可以是int,str,dict,set

li = ['小张','小川',[1,2,3,'小花'],'小王',98,12]
print(li[2][3])   #小花
print(li[2][1:4])   #[2, 3, '小花']

将元组转列表

list(变量名)

tup = ('小明','小强',('xiao','xiaoming'))
print(list(tup)) #['小明', '小强', ('xiao', 'xiaoming')]

Python列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

python表达式描述
len([1, 2, 3])求长度
li1+li2列表的组合
li1*3列表li1的重复
for i in li1:列表li1的迭代
3 in li1判断元素是否在li1中

列表的内置函数

1.append:添加数据到列表的最后一位
用法:变量名.append(数据)

li = ['小青','小张','小王']
li.append('小川')
print(li)  #['小青', '小张', '小王', '小川']

2.insert:添加数据到指定位置
用法:变量名.insert(下标,数据)

li = ['小青','小张','小王']
li.insert(0,'hh')
print(li)  #['hh', '小青', '小张', '小王']

3.extend:添加序列类型到列表的最后一位并单个拆分;也可以拼接列表
用法:变量名.extend(可迭代对象)

li = ['小青','小张','小王']
li.extend('小明')
print(li)   #['小青', '小张', '小王', '小', '明']
li = ['小青','小张','小王']
li1 = [1,2,3]
li.extend(li1)
print(li)   #['小青', '小张', '小王', 1, 2, 3]

1.remove:删除指定的数据
用法:变量名.remove(数据)

li = ['小青','小张','小王']
li.remove('小青')
print(li)  #['小张', '小王']

2.pop:默认删除列表的最后一位,也可以删除指定位置
用法:变量名.pop()
变量名.pop(下标)

li = ['小青','小张','小王']
li.pop()
print(li)   #['小青', '小张']
li = ['小青','小张','小王']
li.pop(1)
print(li)  #['小青', '小王']

3.del:全局删除,也可以删除指定的值
用法:
del 变量名
del 变量名[下标]

li = ['小青','小张','小王']
del li
li = ['小青','小张','小王']
del li[0]
print(li)   #['小张', '小王']

4.clear:清空列表
用法:变量名.clear()

li = ['小青','小张','小王']
li.clear()
print(li)    #[]

用法:变量名[下标] = 值

1.单个修改
li = ['小青', '小张', '小王']
li[1] = 99
print(li)   #['小青', 99, '小王']

2.多个修改
通过切片的方式(包头不包尾)
语法:列表名[起点:终点] = 数据1,数据2.......

1.index:查找子元素,存在则返回对应下标,不存在则会报错
用法:变量名.index(子元素)

li = ['小青', '小张', '小王']
print(li.index('小王'))  # 2

2.count:求某一元素出现的个数
用法:变量名.count()

li = ['小青', '小王', '小王']
print(li.count('小王'))  #2

求长度

len:返回int类型
用法:len(列表名)

li = ['小青', '小张', '小王']
print(len(li))   #  3

列表生成式

1.生成[1,2,3,4,5,6,7,8,9]的方法
普通方法
li = []
for i in range(1,10):
    li.append(i)
print(li)
列表生成式
a =[b for b in range(1,10)]
print(a)
普通方法
a1 = list(range(1,10))
print(a1)
2.生成[1*1,2*2...9*9]
普通写法
li = []
for i in range(1,10):
    li.append(i*i)
print(li)  #[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表生成式
print([i*i for i in range(1,10)])#[1, 4, 9, 16, 25, 36, 49, 64, 81]

sort()sorted()

在Python中,sort()sorted() 都是用于排序的函数,但它们之间有一些重要的区别。

  1. sort()

sort() 是列表(list)的一个方法,它用于对列表中的元素进行原地(in-place)排序。也就是说,它会直接修改原始列表,而不是返回一个新的已排序列表。

示例:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort()
print(lst)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

sort()方法可以接受一个可选的key` 参数,用于指定一个函数来从每个列表元素中提取一个比较键(comparison key)。例如,如果你想根据字符串的长度对字符串列表进行排序,你可以这样做:

lst = ['banana', 'apple', 'cherry', 'date']
lst.sort(key=len)
print(lst)  # 输出: ['date', 'apple', 'banana', 'cherry']

此外,sort() 方法还有一个可选的 reverse 参数,用于指定排序是否应为降序(默认为升序)。

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort(reverse=True)
print(lst)  # 输出: [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
  1. sorted()

sorted() 是一个内置函数,它接受任何可迭代对象(如列表、元组、字典、字符串等),并返回一个新的已排序列表,而不修改原始可迭代对象。

示例:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_lst = sorted(lst)
print(new_lst)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
print(lst)       # 输出: [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]  注意原始列表未被修改

sorted() 函数也接受 keyreverse 参数,用法与 sort() 方法相同。

总结:

  • sort() 是列表的一个方法,它直接修改原始列表。
  • sorted() 是一个内置函数,它接受任何可迭代对象,并返回一个新的已排序列表,而不修改原始可迭代对象。

两者都接受 keyreverse 参数来定制排序行为。

reverse()[::-1]

在Python中,reverse() 是一个内置方法,主要用于列表(list)对象。这个方法会反转列表中的元素顺序,即第一个元素会变成最后一个,第二个元素会变成倒数第二个,以此类推。

reverse() 是一个原地操作(in-place operation),意味着它会直接修改原列表,而不是返回一个新的列表。它没有返回值(或者更准确地说,它的返回值None)。

下面是一个简单的例子:

# 创建一个列表
lst = [1, 2, 3, 4, 5]

# 使用 reverse() 方法反转列表
lst.reverse()

# 打印反转后的列表
print(lst)  # 输出: [5, 4, 3, 2, 1]

# 注意:reverse() 没有返回值(返回 None)
print(lst.reverse())  # 输出: None

由于 reverse() 没有返回值,所以你不能在赋值语句中使用它来创建一个新的反转列表。如果你想要一个新的反转列表而不是修改原列表,你可以使用切片操作(slicing)或者列表推导式(list comprehension),但这两种方法都会创建一个新的列表。

使用切片操作创建反转列表的示例:

# 创建一个列表
lst = [1, 2, 3, 4, 5]

# 使用切片操作创建一个新的反转列表
reversed_lst = lst[::-1]

# 打印新的反转列表
print(reversed_lst)  # 输出: [5, 4, 3, 2, 1]

# 打印原列表,它没有被修改
print(lst)  # 输出: [1, 2, 3, 4, 5]

注意,虽然 reversed() 也是一个内置函数,但它与 reverse() 是不同的。reversed() 返回一个迭代器,该迭代器会按照反向顺序生成列表中的元素,但它不会修改原列表。通常,你会在循环中使用 reversed(),比如:

lst = [1, 2, 3, 4, 5]
for item in reversed(lst):
    print(item)  # 输出: 5, 4, 3, 2, 1

判断list为空

my_list = []
if not my_list:
    print("my_list is empty!")
else:
    print("my_list is not empty!")
my_list = []
if my_list:
    print("my_list is not empty!")
else:
    print("my_list is empty!")
my_list = []
if len(my_list) == 0:
    print("my_list is empty!")
else:
    print("my_list is not empty!")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^~^前行者~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值