python八卦图_八卦python解表,之,8,大方向,理解,列表

列表是有序的

有序(ordered)vs排序(sorted)

有序:先来后到的自然顺序

排序:按照某种要求排列

八字总结:建 增删改查操 切复

一、创建

第一种方法:[]

names = ['zhangsan','lisi','wangwu']

empty_names = [] #空列表

第二种方法:list()

names = list() #空列表

#list()括号里可以接受一个iterable的对象

names = list(range(8)) #[0, 1, 2, 3, 4, 5, 6, 7]

names = list((1,2,3,4)) #[1, 2, 3, 4]

names = list('string') #['s', 't', 'r', 'i', 'n', 'g']

print(names)

判断是否可以iterable的方法

from collections.abc import Iterable

print(isinstance(names,Iterable)) #True

print(isinstance(123,Iterable)) #False

二、增加

"""

append

"""

names = []

names.append('xiaosan') #['xiaosan']

names.append('ruhua') #['xiaosan', 'ruhua']

names.append(3) #['xiaosan', 'ruhua', 3]

names.append([1,2,3]) #['xiaosan', 'ruhua', 3, [1, 2, 3]]

"""

insert

"""

names.insert(0,886) #[886, 'xiaosan', 'ruhua', 3, [1, 2, 3]]

#如果插入的下标超出了长度,就放在最后

names.insert(13,886) #[886, 'xiaosan', 'ruhua', 3, [1, 2, 3], 886]

"""

extend

"""

bad_guys = ['麦叔','小麦']

names.extend(bad_guys) #[886, 'xiaosan', 'ruhua', 3, [1, 2, 3], 886, '麦叔', '小麦']

# names += bad_guys #[886, 'xiaosan', 'ruhua', 3, [1, 2, 3], 886, '麦叔', '小麦']

#+=的效果与extend一样

print(names)

三、删除

两类删除方法:①根据下标②根据内容删除

"""

第一种方法:del----根据下标

"""

names = ['xiaolan','ruhua','ergou','saner','xiaoming','dingdang']

del names[2] #['xiaolan', 'ruhua', 'saner','xiaoming','dingdang']

"""

第二种方法:pop----根据下标

1.默认去掉最后一个

2.也可以指定去掉哪一个

3.会返回pop的值

4.如果下标越界,抛出IndexError

"""

names.pop() #['xiaolan', 'ruhua', 'saner', 'xiaoming']

n = names.pop(1)

print(n) #ruhua

print(names) #['xiaolan', 'saner', 'xiaoming']

"""

第三种方法:remove----根据内容

1.只会删除第一个符合条件的

2.如果没有符合条件的,抛出ValueError

"""

names.remove('xiaolan') #['saner', 'xiaoming']

print(names)

if 'xiaolan' in names:

names.remove('xiaolan')

四、修改

names = ['xiaolan','xiaohua','ergou','dongdong']

print(names) #['xiaolan', 'xiaohua', 'ergou', 'dongdong']

names[1] = 'liangliang'

print(names) #['xiaolan', 'liangliang', 'ergou', 'dongdong']

五、查

names = [‘xiaolan’,‘xiaohua’,‘xiaohua’,‘ergou’,‘dongdong’]

"""

[]

下标从0开始,也可以从-1开始

"""

print(names[0]) #xiaolan

print(names[-1]) #dongdong

"""

index

查询下标

返回第一个查询到的下标

如果没有,抛出ValueError

"""

print(names.index('xiaohua')) #1

"""

len()

"""

print(len(names)) #5

六、操作

①循环

names = ['zhangsan','lisi','wangwu','zhaoliu']

for n in names:

print('hello',n)

# hello zhangsan

# hello lisi

# hello wangwu

# hello zhaoliu

for index,n in enumerate(names):

print(f'no{index+1} is {n}')

# no1 is zhangsan

# no2 is lisi

# no3 is wangwu

# no4 is zhaoliu

②基本操作

names = ['zhangsan','lisi','wangwu','zhaoliu']

scores = [87,65,98,32]

print(names + scores) #和extend是一样的效果

#['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 87, 65, 98, 32]

print(scores*3) #[87, 65, 98, 32, 87, 65, 98, 32, 87, 65, 98, 32]

③排序

—list.reverse() 会修改原列表

—reversed(list) 不会修改原列表,会返回一个新的

—sort同上

—sort可以指定reverse=True

—sort可以指定key

scores = [87,65,98,32]

#ordered

print(scores) #[87, 65, 98, 32]

scores.reverse()

print(scores) #[32, 98, 65, 87]

#sorted

scores.sort()

print(scores) #[32, 65, 87, 98]

scores.sort(reverse=True)

print(scores) #[98, 87, 65, 32]

如果不希望改原来的scores,则:

scores = [87,65,98,32]

print(scores) #[87, 65, 98, 32]

print(sorted(scores,reverse=True)) #[98, 87, 65, 32]

print(scores) #[87, 65, 98, 32]

更加复杂类型的排序

names_scores = [('zhangsan',87),('lantian',100),('lisi',98)]

print(sorted(names_scores,key = lambda n:n[1]))

#[('zhangsan', 87), ('lisi', 98), ('lantian', 100)]

补充:字符串大小比较是一个个字符比较过去,按照字符顺序,如果前面都一样,长的那个算大,eg:maishu

li = ['zhangsan','zhangsan1','ll']

print(list(reversed(li)))#['ll', 'zhangsan1', 'zhangsan']

print(li) #['zhangsan', 'zhangsan1', 'll']

li.reverse()

print(li) #['ll', 'zhangsan1', 'zhangsan']

④max、min、sum

类型不一致时,无法进行比较,比如:[2,4,‘zhangsan’,(24,‘kaihua’)]

scores = [87,65,98,32]

print(max(scores)) #98

print(min(scores)) #32

print(sum(scores)) #282

names = ['zhangsan','lisi','wangwu']

print(max(names)) #zhangsan

print(min(names)) #lisi

七、切片

八、复制

names = ['zhangsan','lisi','wangwu','zhaoliu']

names2 = names[:] #最简单的复制

print(names2)

"""

推导式

"""

nums = list(range(10)) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

sq_nums = [n*n for n in nums] #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

nums_3 = [n for n in nums if n%3==0] #[0, 3, 6, 9]

列表推导式详解

查看这篇博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值