美文网首页
list 和 tuple 的 11 个经典使用案例

list 和 tuple 的 11 个经典使用案例

作者: 途途途途 | 来源:发表于2021-10-28 08:41 被阅读0次

大家好我是邓哥,

今天给大家介绍list 和 tuple 的 11 个经典使用案例,一起来看看吧!

1. 判断 list 内有无重复元素

我们可以实现一个判断是否重复的is_duplicated方法,使用 list 封装的 count 方法,依次判断每个元素 x 在 list 内的出现次数。

如果大于 1,则立即返回 True,表示有重复。

如果完成遍历后,函数没返回,表明 list 内没有重复元素,返回 False。

defis_duplicated(list):

foriteminlist:

# 判断item在list中出现次数

iflist.count(item) >1:

returnTrue

returnFalse

if__name__ =='__main__':

lis = [45,89,23,45,36,78,15,59,35,21,75,89,36]

print(is_duplicated(lis))

'''

True

'''

方法2:判断 list 内有无重复元素

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

以上方法实现不简洁,借助 set 判断更方便

defis_duplicated(lst):

returnlen(lst) != len(set(lst))

if__name__ =='__main__':

lis = [45,89,23,36,78,15,59,35,21,75]

print(is_duplicated(lis))

'''

False

'''

2. 列表反转

一行代码实现列表反转,非常简洁。

我们可以借助python切片[::-1] 生成逆向索引(负号表示逆向),步长为 1 的切片。

defreverse(lst):

# 根据切片一步实现反转列表

returnlst[::-1]

if__name__ =='__main__':

lis = [45,89,23,36,78,15,59,35,21,75]

print('正向列表', lis)

print('反向列表', reverse(lis))

'''

正向列表 [45, 89, 23, 36, 78, 15, 59, 35, 21, 75]

反向列表 [75, 21, 35, 59, 15, 78, 36, 23, 89, 45]

'''

3.找出列表中的所有重复元素

遍历列表,如果出现次数大于 1,且不在返回列表 ret 中,则添加到 ret 中。

deffind_duplicated(lis):

new_list = []

foriteminlis:

iflis.count(item) >1anditemnotinnew_list:

new_list.append(item)

returnnew_list

if__name__ =='__main__':

lis = [45,89,23,36,78,15,59,35,21,75,89,15,21]

print('重复元素:', find_duplicated(lis))

'''

重复元素: [89, 15, 21]

'''

4. 生成器生成斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列

使用 Python 的生成器生成斐波那契数列,保证代码简洁的同时,

还能节省内存:

deffibonacci(n):

a, b =1,1

forxinrange(n):

yielda

a, b = b, a + b

if__name__ =='__main__':

print(list(fibonacci(10)))

'''

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

'''

5.更多参数

带有一个 * 的参数为可变的位置参数,意味着能传入任意多个位置参数。

我们来求众多列表中元素最多的一个:

defmax_len(*lists):

# key 函数定义怎么比较大小:lambda 的参数 v 是 lists 中的一个元素。

returnmax(*lists, key=lambdav: len(v))

if__name__ =='__main__':

print('最长列表是:', max_len([1,2,3], [4,5,6,7], [8,9,10]))

'''

最长列表是: [4, 5, 6, 7]

'''

6.求表头

返回列表的第一个元素,注意列表为空时,返回 None。

defhead(lst):

returnlst[0]iflen(lst) >0elseNone

if__name__ =='__main__':

print('列表头元素:', head([-9,8,9,10]))

'''

列表头元素: -9

'''

7.求表尾

有头就有尾,在Python中,我们可以使用索引-1来获取列表的最后一个元素。

deftail(lst):

returnlst[-1]iflen(lst) >0elseNone

if__name__ =='__main__':

print('列表尾元素:', tail([-9,8,9,10,100]))

'''

列表尾元素:100

'''

8. 打印乘法表

for-for外层循环一次,print(),换行;内层循环一次,打印一个等式。

defmul_table():

foriinrange(1,10):

forjinrange(1, i +1):

print(f'{j}x{i}={i * j}\t', end='')

print()# 打印一个换行

if__name__ =='__main__':

mul_table()

'''

1x1=1

1x2=2 2x2=4

1x3=3 2x3=6 3x3=9

1x4=4 2x4=8 3x4=12 4x4=16

1x5=5 2x5=10 3x5=15 4x5=20 5x5=25

1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36

1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49

1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64

1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

'''

9. 拼接元素

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

类似于下:

a = [1,11,111]

b = [2,22,222]

print(list(zip(a, b)))

'''

[(1, 2), (11, 22), (111, 222)]

'''

t[:-1]:原列表切掉最后一个元素;

t[1:]:原列表切掉第一个元素;

zip(iter1, iter2):实现 iter1 和 iter2 的对应索引处的元素拼接。

defpair(t):

# 生成相邻元素对

returnlist(zip(t[:-1], t[1:]))

if__name__ =='__main__':

print(pair([4,5,6,7]))

print(pair(range(10)))

'''

[(4, 5), (5, 6), (6, 7)]

[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]

'''

10.样本抽样

内置 random 模块中,有一个 sample 函数,实现“抽样”功能。

下面例子从 100 个样本中,随机抽样 10 个。

首先,使用列表生成式,创建长度为 100 的列表 lst;

然后,sample 抽样 10 个样本。

fromrandomimportrandint, sample

# randint 生成随机整数;

lst = [randint(0,50)forxinrange(100)]

print(lst)

print('列表前五个元素:', lst[:5])

print('列表最后五个元素:', lst[-5:])

# sample 从 lst 中抽样 10 个元素

lst_sample = sample(lst,10)

print('列表随机十个元素:', lst_sample)

'''

[46, 13, 8, 14, 2, 35, 16, 18, 29, 28, 0, 14, 4, 31, 26, 26, 17, 31, 26, 3, 17, 29, 14, 9, 42, 11, 27, 0, 1, 39, 34, 35, 34, 6, 50, 40, 30, 40, 44, 2, 0, 15, 12, 3, 34, 7, 40, 29, 14, 15, 27, 39, 6, 32, 1, 38, 35, 26, 50, 27, 11, 2, 28, 33, 49, 47, 43, 44, 47, 23, 33, 15, 19, 36, 31, 49, 42, 6, 13, 21, 1, 29, 12, 9, 46, 43, 37, 18, 22, 47, 36, 8, 12, 4, 39, 17, 48, 4, 33, 21]

列表前五个元素: [46, 13, 8, 14, 2]

列表最后五个元素: [17, 48, 4, 33, 21]

列表随机十个元素: [30, 12, 40, 31, 47, 42, 6, 14, 14, 49]

'''

11. 重洗数据集

内置 random 中的 shuffle 函数,能冲洗数据。

值得注意,shuffle 是对输入列表就地(in place)洗牌,节省存储空间。

fromrandomimportshuffle, randint

lst = [randint(0,30)for_inrange(100)]

print(lst[:5])

# 重洗数据

shuffle(lst)

print(lst[:5])

'''

[30, 27, 8, 25, 14]

[2, 29, 29, 5, 14]

'''

好了,今天的分享就到期结束了,有任何问题大家可以留言哦!

相关文章

网友评论

      本文标题:list 和 tuple 的 11 个经典使用案例

      本文链接:https://www.haomeiwen.com/subject/gbwmaltx.html