[Python教程总结]列表的相关操作总结(相关函数,截取,拼接,延长列表,倍增,附带一些random的结合使用)

列表是最基本的python储存方式之一,通过列表可以存储不同类型的内容,如字符串,数字,列表,字典等均可作为列表的元素值

列表是以一对方括号    [   ]     包含起来的,与元组和字典不同,通过列表的下标索引可以获取列表内的元素值。

------还是先照例先给一些list的相关函数以供查阅(表格来自《python程序设计》(董付国))-----

在列表尾部添加一个元素list.append(x)
输入列表L,将其元素接到列表后部list.extend(L)
在下标为index处添加元素xlist.insert(index,x)
删除首次出现的元素xlist.remove(x)
删除元素(并返回该位置的元素)(默认最后一个元素)list.pop([index])
清空列表

list.clear()

返回元素的下标(不存在元素则显示异常)list.index(x)
计数元素个数list.count(x)
原地颠倒列表list.reverse()
原地排序(对于汉语使用笔画数排序)list.sort(key=None,reverse=False)
返回对象的浅复制list.copy()
返回列表长度(下面虽然无关但很常用)len(list)
最大值    max(list)
最小值min(list)
直接排序sorted(list)
乱序(像这些会在后边有涉及(需import random)random.shuffle(L)
其他相关函数map,filter,enumerate,reduce等


---------------------------------------------------------------------------

一、列表的创建

直接定义一个基本的列表方式:a=[1,2,3,4,5]    ,字符串列表:a=["程序","菜鸟","一只","Python"]

                        二维列表:a=[[1,2,3],[4,5,6]]

列表创建的其他几种方式:

           

1. 使用list()函数创建列表

a=list()
print(a)

结果:[] 

另外,list还可以将元组,字典等转化为列表

示例:

list((1,2,3,4))      #将元组转换为列表 

         ——[1, 2, 3, 4]

>> a_dict={'name':1,'age':2}
>> list(a_dict)         #仅将字典的键转为列表(可用于调用列表内容)

        ——['name','age']

list还可以转换字符串:

list("程序菜鸟一只abcd")
#----['程', '序', '菜', '鸟', '一', '只', 'a', 'b', 'c', 'd']

       

2.使用表达式和for等创建列表(创建函数列表)

1)range,for表达式和最简单的函数定义

a=list(range(10))   #使用list和range返回列表---[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b=list(i**2 for i in range(10))  #表达式和range创建列表-[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
c=list([] for i in range(10))    #定义一个类似于数组的东西
c=[None for i in range(10)]      #自己看吧

2)在列表定义中使用表达式:

#--------使用random函数做表达式创建列表-----
import random
a=list(range(300))
b=[random.choice(a) for i in range(10)]
print(b)
#生成一个0~299间长度为10的随机列表


#--------定义函数,并使用函数创建-------
def f(a):
    if (a>10):
        return a+10
    else:
        return a-10

c=[f(x) for x in range(15)]
print(c)
#小于等于10的部分-10,大于10的部分+10

#-------------使用lambda表达式(未命名函数)创建-----------------------

d=[(lambda x:x+10)(t) for t in range(5)]
print(d)

#也可使用
ff=lambda x: x+5
e=[ff(x) for x in range(10)]
print(e)

二、列表的相关操作

1.按索引取值

a=list("arkxilingyyds")
print(a[0])  #默认从0开始
print(a[1])

2.列表拼接与倍增

x=list("程序")
y=list("菜鸟")
print(x+y)    #直接拼接
#----['程', '序', '菜', '鸟']-----

print(x*3+y*2)
#---['程', '序', '程', '序', '程', '序', '菜', '鸟', '菜', '鸟']

3.列表的截取

a=list("arkxilingyyds")
print(a[2:])   #从下表为2的元素截取到尾
print(a[:10])  #从头截取

print(a[5:8])   #截取指定的段
print(a[-3:])  #从尾部截取3个元素

4.利用上面的函数实现列表增加元素

a=list("arkxilingyyds")
a.append(list("abcdefg"))
print(a)
print(a.pop(10))   #删除下标为10的元素
print(a) #已删除后的列表元素

其他的函数在上方的表里都有总结,在这里不再赘述

5.按某种方式进行排序

a=['abcd','abcdefg','abc','efghi']
a.sort(key=len,reverse=False)  #按长度排序
print(a)

#-------------自定义排序函数---------

def f(x):
     return x**2

b=[-3,-2,-1,0,1,2,3]

b.sort(key=f,reverse=False)
print(b)
#----[0, -1, 1, -2, 2, -3, 3]

三、列表的相关函数enumerate,map等用法

1)enumerate用途:构造一个带有下标的列表(每个元素是元组)

a=list("arkxilingyyds")
b=enumerate(a)
print(list(b))   #注意用list
#[(0, 'a'), (1, 'r'), (2, 'k'), (3, 'x'), (4, 'i'), (5, 'l'), (6, 'i'), (7, 'n'), (8, 'g'), (9, 'y'), (10, 'y'), (11, 'd'), (12, 's')]

2)zip函数

"压缩"列表

a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
print(zip(a,b,c))

#[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]


print(list(map(list,zip(a,b,c))))   #这样可以得到二维列表


[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

3) map函数(  map(func,L1,....)    )

(参考网址:python中的map函数_菜鸟更要努力呀-优快云博客)

map函数作用:将函数作用在列表中的每一个元素上,返回得到的值

第一个参数也可使用list,int等

#-----直接自定义函数------
def f(a):
    if (a>3):
        return a+10
    else:
        return a-10
a=[1,2,3,4,5,6]
b=list(map(f,a))
print(b)
#------[-9, -8, -7, 14, 15, 16]  #小于3的减10,大于3的+10


#-----用labda匿名函数-------
ff=lambda x: x+10  #定义匿名函数
a=[5,6,7,8,9,10]

b=list(map(ff,a))  #计算相应的值

print(b)
#----[15, 16, 17, 18, 19, 20]-------


#比如用int转换为数字型
c=list("2345678")
print(list(map(int,c)))

#---[2, 3, 4, 5, 6, 7, 8]

相关参考资料:

1. (random库函数的使用教程)python库之random库(随机数函数)_sandalphon4869的博客-优快云博客_python random库

2.(创建列表的4种方法)Python创建列表的4种方式_围城客的专栏-优快云博客_python创建列表的方法

3. 《Python程序设计(第三版)》   董富国著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序菜鸟一只

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

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

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

打赏作者

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

抵扣说明:

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

余额充值