python list列表详解(python入门教程(非常详细))

网友投稿 271 2022-08-31


python list列表详解(python入门教程(非常详细))

文章目录

​​1. 查对象(切片)​​​​2. 查索引(index)​​​​3. 插入(append)​​​​4. 增添(extend)​​​​5. 删除 (remove pop del)​​

​​5.1 remove​​​​5.2 pop​​​​5.3 del​​

​​6. 修改​​​​7. 计数(count)​​​​8. 颠倒(reverse)​​​​9. 排序(sort)​​

​​9.1 普通版​​​​9.2 升级版​​

​​10. 不改变源列表排序(sorted)​​​​11. 列表脚本操作符​​​​12. 列表函数​​​​13. 列表推导式​​​​14. 列表常用场景​​

​​14.1 遍历​​​​14.2 遍历加索引​​​​14.3 多列表遍历​​

​​14.3.1 zip​​​​14.3.2 笨办法多列表遍历​​

​​14.4 检查列表是否为空​​​​14.5 拷贝一个列表对象​​​​14.6 获取列表中的最后一个元素​​​​14.7 随机获取列表中的某个元素​​​​14.8 list与string的转换​​

​​14.8.1 list转换string​​​​14.8.2 string转换list​​

​​14.9 list(列表)添加dict(字典)​​​​14.20 txt文件内容转换成列表​​

1. 查对象(切片)

$ vim list0.pya=['wuhao','jinxing','xiaohu','sanpang','ligang']print(a[0]) #取第一个print “a[1]:”,a[1] #取第一个print(a[1]) #取第二个print(a[-1]) #取最后一个print(a[1:4]) #取第二个到第四个print(a[1:]) #取第二个到最后个print(a[1:-1]) #取第二个到最后个print(a[1:-1:1]) #从左到右一个一个取print(a[1::2]) #从左到右隔一个一个取b=a[3::-1] #从右到左一个一个取print(b)print(a[-2::-1])#从右到左一个一个取print(a[1:-1:-2])#从右到左隔一个一个取$ python list1.pywuhaoa[1]: jinxingjinxingligang['jinxing', 'xiaohu', 'sanpang']['jinxing', 'xiaohu', 'sanpang', 'ligang']['jinxing', 'xiaohu', 'sanpang']['jinxing', 'xiaohu', 'sanpang']['jinxing', 'sanpang']['sanpang', 'xiaohu', 'jinxing', 'wuhao']['sanpang', 'xiaohu', 'jinxing', 'wuhao'][]

特色版

first_two = [1, 2, 3, 4, 5][0:2]print(first_two)# [1, 2]steps = [1, 2, 3, 4, 5][0:5:2]print(steps)# [1, 3, 5]mystring = "abcdefdn nimt"[::2]print(mystring)# 'aced it'

2. 查索引(index)

$ cat list1.py#!/usr/bin/python#!---coding:utf-8----a=['wuhao','jinxin','xiaohu','ligang','sanpang','ligang']print(a.index('jinxin'))first_lg_index = a.index("ligang")print("first_lg_index",first_lg_index)little_list = a[first_lg_index+1:] #切片second_lg_index = little_list.index("ligang")print("second_lg_index",second_lg_index)second_lg_index_in_bgg_list = second_lg_index + second_lg_index + 1print("second_lg_index_in_bgg_list",second_lg_index_in_bgg_list)print("sedcond lg:",a[second_lg_index_in_bgg_list])$ python list9.py1('first_lg_index', 3)('second_lg_index', 1)('second_lg_index_in_bgg_list', 3)('sedcond lg:', 'ligang')

3. 插入(append)

$ cat list2.py #!/usr/bin/python#!---coding:utf-8----a=['wuhao','jinxing','xiaohu','sanpang','ligang']list = [] ## 空列表a.append('xuepeng') #将数据插入到最后一个位置print(a)a.insert(1,"liming") #将数据插入到任意一个位置(有一个查询动作,效率高)print(a)numbers = [12,37,5,42,8,3]even = []odd = []while len(numbers) > 0: number = numbers.pop() if(number % 2) == 0: even.append(number) else: odd.append(number)print evenprint odd$ python list2.py ['wuhao', 'jinxing', 'xiaohu', 'sanpang', 'ligang', 'xuepeng']['wuhao', 'liming', 'jinxing', 'xiaohu', 'sanpang', 'ligang', 'xuepeng'][8, 42, 12][3, 5, 37]

4. 增添(extend)

第一种增添

$ cat list3.py#!/usr/bin/python#!---coding:utf-8----a = [1,2,3]b = [4,5,6]a.extend(b)print a$ python list3.py[1, 2, 3, 4, 5, 6]

第二种增添

listone = [1, 2, 3]listtwo = [4, 5, 6]mergedlist = listone + listtwoprint(mergelist)>>>[1, 2, 3, 4, 5, 6]

增添" + "的扩展(class)

class User(object): def __init__(self, age): self.age = age def __repr__(self): return 'User(%d)' % self.age def __add__(self, other): age = self.age + other.age return User(age)user_a = User(10)user_b = User(20)c = user_a + user_bprint(c)>>>User(30)

5. 删除 (remove pop del)

5.1 remove

$ cat list4.py #!/usr/bin/python#!---coding:utf-8----a=['wuhao','jinxing','xiaohu','sanpang','ligang']a.remove(a[0])print(a)a.remove('jinxing')print(a)$ python list4.py ['jinxing', 'xiaohu', 'sanpang', 'ligang']['xiaohu', 'sanpang', 'ligang']

5.2 pop

$ cat list5.py#!/usr/bin/python#!---coding:utf-8----a=['wuhao','jinxing','xiaohu','sanpang','ligang']a.pop(1) #pop删除时会返回被删除的元素b=a.pop(1)print(b)print(a)$ python list5.py xiaohu['wuhao', 'sanpang', 'ligang']

5.3 del

$ cat list6.py#!/usr/bin/python#!---coding:utf-8----a=['wuhao','jinxing','xiaohu','sanpang','ligang']del a[0]print(a)del a[2:4] #删除从第2个元素开始,到第4个为止的元素(但是不包括尾部元素)print(a)$ python list6.py ['jinxing', 'xiaohu', 'sanpang', 'ligang']['jinxing', 'xiaohu']

6. 修改

$ cat list7.py #!/usr/bin/python#!---coding:utf-8----a=['wuhao','jinxing','xiaohu','sanpang','ligang']a[1]='haidilao'print(a)a[1:3]=['a','b']print(a)$ python list7.py ['wuhao', 'haidilao', 'xiaohu', 'sanpang', 'ligang']['wuhao', 'a', 'b', 'sanpang', 'ligang']

7. 计数(count)

$ cat list8.py#!/usr/bin/python#!---coding:utf-8----print ['to','be','or','not','to','be'].count('to')x = [[1, 2],1,1,[1,2],3]print x.count(1)print x.count([1,2])$ python list8.py222

8. 颠倒(reverse)

$ cat list10.py#!/usr/bin/python#!---coding:utf-8----a=['wuhao','jinxin','xiaohu','ligang','sanpang','ligang']a.reverse()print(a)$ python list10.py['ligang', 'sanpang', 'ligang', 'xiaohu', 'jinxin', 'wuhao']

9. 排序(sort)

9.1 普通版

$ cat list11.py#!/usr/bin/python#!---coding:utf-8----x = [4,6,1,7,9]x.sort()print(x)x.sort(reverse=True) print(x)a = ['Wuhao','jinxin','xiaohu','ligang','sanpang','ligang']a.sort()print(a)$ python list11.py[1, 4, 6, 7, 9][9, 7, 6, 4, 1]['Wuhao', 'jinxin', 'ligang', 'ligang', 'sanpang', 'xiaohu']

默认是按升序排列,指定 reverse=True 按降序排列

9.2 升级版

items = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {"name": 'cater', 'age': 20}]items.sort(key=lambda item: item.get("age"))print(items)>>>[{'age': 10, 'name': 'Bart'}, {'age': 20, 'name': 'cater'}, {'age': 39, 'name': 'Homer'}]

10. 不改变源列表排序(sorted)

items = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {"name": 'cater', 'age': 20}]new_items = sorted(items, key=lambda item: item.get("age"))print(items)>>>[{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}]print(new_items)>>>[{'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}, {'name': 'Homer', 'age': 39}]

11. 列表脚本操作符

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

>>> len([1, 2, 3]) 3 长度>>> [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] #组合>>> ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] # 重复>>>3 in [1, 2, 3] True # 元素是否存在于列表中>>>for x in [1, 2, 3]: print x1 2 3 #迭代

12. 列表函数

Python包含以下函数:

1 cmp(list1, list2)比较两个列表的元素2 len(list)列表元素个数3 max(list)返回列表元素最大值4 min(list)返回列表元素最小值5 list(seq)将元组转换为列表

13. 列表推导式

列表推导式的基本语法如下:

[expression for item in list if conditional]

举一个基本的例子:用一组有序数字填充一个列表:

mylist = [i for i in range(10)]print(mylist)# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

由于可以使用表达式,所以你也可以做一些算术运算:

squares = [x**2 for x in range(10)]print(squares)# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

甚至可以调用外部函数:

def some_function(a): return (a + 5) / 2my_formula = [some_function(i) for i in range(10)]print(my_formula)# [2, 3, 3, 4, 4, 5, 5, 6, 6, 7]

最后,你还可以使用 ‘if’ 来过滤列表。在如下示例中,我们只保留能被2整除的数字:

filtered = [i for i in range(20) if i%2==0]print(filtered)# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

14. 列表常用场景

14.1 遍历

$ cat list12.py#!/usr/bin/python#!---coding:utf-8----a_list = ['z', 'c', 1, 5, 'm']for each in a_list: print(each)$ python list12.pyzc15m

14.2 遍历加索引

普通版

items = [8, 23, 45]for index in range(len(items)): print(index, "-->", items[index])>>>0 --> 81 --> 232 --> 45

优雅版

for index, item in enumerate(items): print(index, "-->", item)>>>0 --> 81 --> 232 --> 45

enumerate 还可以指定元素的第一个元素从几开始,默认是0,也可以指定从1开始:

for index, item in enumerate(items, start=1): print(index, "-->", item)>>>1 --> 82 --> 233 --> 45

14.3 多列表遍历

14.3.1 zip

$ cat list13.py #!/usr/bin/python#!---coding:utf-8----name_list = ['张三', '李四', '王五']age_list = [54, 18, 34]for name, age in zip(name_list, age_list): print(name, ':', age)$ python3.8 list13.py 张三 : 54李四 : 18王五 : 34

cat list14.py#!/usr/bin/python#!---coding:utf-8----list1 = [1, 2, 3, 4, 5]list2 = ['a', 'b', 'c', 'd', 'f']list3 = ['A', 'B', 'C', 'D', 'F'] for number, lowercase, capital in zip(list1, list2, list3): print(number, lowercase, capital)$ python3.8 list14.py 1 a A2 b B3 c C4 d D5 f F

$ cat list15.py #!/usr/bin/python#!---coding:utf-8----name_list = ['张三', '李四', '王五']age_list = [54, 18, 34]print(zip(name_list, age_list))print(type(zip(name_list, age_list)))print(*zip(name_list, age_list))print(list(zip(name_list, age_list)))print(dict(zip(name_list, age_list)))$ python3.8 list15.py ('张三', 54) ('李四', 18) ('王五', 34)[('张三', 54), ('李四', 18), ('王五', 34)]{'张三': 54, '李四': 18, '王五': 34}

14.3.2 笨办法多列表遍历

cat list16.py#!/usr/bin/python#!---coding:utf-8----list1 = [1, 2, 3, 4, 5]list2 = ['a', 'b', 'c', 'd', 'f'] n = 0for each in list1: print(each, list2[n]) n += 1$ python3.8 list16.py 1 a2 b3 c4 d5 f

14.4 检查列表是否为空

普通版:

if len(items) == 0: print("空列表")或者if items == []: print("空列表")

优雅版:

$ cat list17.py #!/usr/bin/python#!---coding:utf-8----list1 = [1, 2, 3, 4, 5]if not list1: print("空列表")else: print("非空列表")$ python3.8 list17.py 非空列表

14.5 拷贝一个列表对象

第一种方法:

new_list = old_list[:]

第二种方法:

new_list = list(old_list)

第三种方法:

import copy# 浅拷贝new_list = copy.copy(old_list)# 深拷贝new_list = copy.deepcopy(old_list)

14.6 获取列表中的最后一个元素

索引列表中的元素不仅支持正数还支持负数,正数表示从列表的左边开始索引,负数表示从列表的右边开始索引,获取最后一个元素有两种方法。

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> a[len(a)-1]10>>> a[-1]10

14.7 随机获取列表中的某个元素

import randomitems = [8, 23, 45, 12, 78]>>> random.choice(items)78>>> random.choice(items)45>>> random.choice(items)12

14.8 list与string的转换

14.8.1 list转换string

​​join()​​​函数 list = [1, 2, 3, 4, 5]

‘’.join(list) 结果即为:12345

‘,’.join(list) 结果即为:1,2,3,4,5

a = 5str=[] #有的题目要输出字符串,但是有时候list更好操作,于是可以最后list转string提交for i in range(0,a): str.append('M')str1=''.join(str)print(str1)#MMMMM

14.8.2 string转换list

str = 'abcde'print(str)#输出:abcdelist1 = list(str) print(list1)#输出:['a', 'b', 'c', 'd', 'e']

14.9 list(列表)添加dict(字典)

nid = "1,2"print(nid.split(','))datas = []for i in nid.split(','): mydict = {} mydict["id"] = str(i) mydict["checked"] = True datas.append(mydict)print(str(datas))

输出

['1', '2'] [{'id': '1', 'checked': True}, {'id': '2', 'checked': True}]

14.20 txt文件内容转换成列表

方法一:

# -*- coding:utf-8 -*-f = open(r'ip.txt','r')a = list(f)print(a)f.close()

方法二:

# -*- coding:utf-8 -*-f = open(r'ip.txt','r')a=[i for i in f]print(a)f.close()


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python dict字典详解(python怎么读)
下一篇:python异常处理详解(Python处理异常)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~