请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

Python中最常见的10个问题(list)

[复制链接]
查看: 90|回复: 0

8157

主题

8157

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
24481
发表于 2019-12-2 17:23 | 显示全部楼层 |阅读模式
前言

本文的翰墨及图片来历于收集,仅供进修、交换操纵,不具有任何贸易用处,版权归原作者一切,若有题目请实时联系我们以作处置惩罚。
作者: 大熊
PS:若有必要Python进修材料的小同伴可以加点击下方链接自行获得
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
列表是Python中操纵最多的一种数据成果,怎样高效操纵列表是进步代码运转服从的关键,这篇文章列出了10个常用的列表操纵,盼望对你有帮助。
1、迭代列表时怎样拜候列表下标索引

平常版:
  1. 1 items = [8, 23, 45]2 for index in range(len(items)):3     print(index, "-->", items[index])4 5 >>>6 0 --> 87 1 --> 238 2 --> 45
复制代码

文雅版:
  1. 1 for index, item in enumerate(items):2     print(index, "-->", item)3 4 >>>5 0 --> 86 1 --> 237 2 --> 45
复制代码

enumerate 还可以指定元素的第一个元素从几起头,默许是0,也可以指定从1起头:
  1. 1 for index, item in enumerate(items, start=1):2     print(index, "-->", item)3 4 >>>5 1 --> 86 2 --> 237 3 --> 45
复制代码

2、append 与 extend 方式有什么区分

append暗示把某个数据当做新元素追加到列表的末端面,它的参数可所以尽情工具
  1. 1 x = [1, 2, 3]2 y = [4, 5]3 x.append(y)4 print(x)5 6 >>>7 [1, 2, 3, [4, 5]]
复制代码

extend 的参数必须是一个可迭代工具,暗示把该工具里面的一切元素逐一地追加到列表的前面
  1. 1 x = [1, 2, 3] 2 y = [4, 5] 3 x.extend(y) 4 print(x) 5  6 >>> 7 [1, 2, 3, 4, 5] 8  9 # 等价于:10 for i in y:11     x.append(i)
复制代码

3、检查列表能否为空

平常版:
  1. 1 if len(items) == 0:2     print("空列表")
复制代码
  1. 大要
复制代码
  1. if items == []:    print("空列表")
复制代码
复制代码
文雅版:
  1. if not items:    print("空列表")
复制代码

4、怎样大白切片

切片用于获得列表中指定范的子集,语法很是简单
  1. 1 items[start:end:step] 2 从 start 到 end-1 位置之间的元素。step 暗示步长,默以为1,暗示持续获得,假如 step 为 2 就暗示每隔一个元素获得。 3  4 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 5  6 >>> a[3:8] # 第3到第8位置之间的元素 7 [4, 5, 6, 7, 8] 8  9 >>> a[3:8:2] # 第3到第8位置之间的元素,每隔一个元素获得10 [4, 6, 8]11 12 >>> a[:5]   # 省略start暗示从第0个元素起头13 [1, 2, 3, 4, 5]14 15 >>> a[3:]  # 省略end暗示到末端一个元素16 [4, 5, 6, 7, 8, 9, 10]17 18 >>> a[::]  # 都省略相当于拷贝一个列表,这类拷贝属于浅拷贝19 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
复制代码

5、怎样拷贝一个列表工具

第一种方式:
  1. new_list = old_list[:]
复制代码

第二种方式:
  1. new_list = list(old_list)
复制代码

第三种方式:
  1. 1 import copy2 # 浅拷贝3 new_list = copy.copy(old_list)4 # 深拷贝5 new_list = copy.deepcopy(old_list)
复制代码

6、怎样获得列表中的末端一个元素

索引列表中的元素不但支持正数还支持负数,正数暗示从列表的左侧起头索引,负数暗示从列表的右侧起头索引,获得末端一个元素有两种方式。
  1. 1 >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]2 >>> a[len(a)-1]3 4 105 >>> a[-1]6 10
复制代码

7、怎样对列表停止排序

列表排序有两种方式,一种是列表自带的方式 sort,一种是内建函数 sorted。复杂的数据典范可经过指定 key参数停止排序。由字典组成的列表,按照字典元素中的age字段停止排序:
  1. 1 items = [{'name': 'Homer', 'age': 39}, 2          {'name': 'Bart', 'age': 10}, 3          {"name": 'cater', 'age': 20}] 4  5 items.sort(key=lambda item: item.get("age")) 6  7 print(items) 8  9 >>>10 [{'age': 10, 'name': 'Bart'}, {'age': 20, 'name': 'cater'}, {'age': 39, 'name': 'Homer'}]
复制代码

列表有 sort方式,用于对原列表停止重新排序,指定 key 参数,key 是匿名函数,item 是列表中的字典元素,我们按照字典中的age停止排序,默许是按升序排列,指定 reverse=True 按降序排列
  1. 1 items.sort(key=lambda item: item.get("age"), reverse=True)2 3 >>>4 [{'name': 'Homer', 'age': 39}, {'name': 'cater', 'age': 20}, {'name': 'Bart', 'age': 10}]
复制代码

假如不盼望改变原列表,而是天生一个新的有序列表工具,那末可之内置函数 sorted ,该函数返回新列表
  1. 1 items = [{'name': 'Homer', 'age': 39}, 2          {'name': 'Bart', 'age': 10}, 3          {"name": 'cater', 'age': 20}] 4  5 new_items = sorted(items, key=lambda item: item.get("age")) 6  7 print(items) 8 >>> 9 [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}]10 11 print(new_items)12 >>>13 [{'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}, {'name': 'Homer', 'age': 39}]
复制代码

8、怎样移除列表中的元素

删除列表中的元素有三种方式
remove 移除某个元素,而且只能移除第一次出现的元素
  1. 1 >>> a = [0, 2, 2, 3] 2 >>> a.remove(2) 3 >>> a 4 [0, 2, 3] 5  6  7 # 假如要移除的元素不在列表中,则抛出 ValueError 很是 8 >>> a.remove(7) 9 Traceback (most recent call last):10   File "", line 1, in 11 ValueError: list.remove(x): x not in list·      12 del 按照指定的位置移除某元素13 14 >>> a = [3, 2, 2, 1]15 # 移除第一个元素16 >>> del a[1]17 [3, 2, 1]18 19 # 当超越列表的下表索引时,抛出IndexError的很是20 >>> del a[7]21 Traceback (most recent call last):22   File "", line 1, in 23 IndexError: list assignment index out of range
复制代码

pop 与del 类似,可是 pop 方式可以返回移除的元素
  1. 1 >>> a = [4, 3, 5] 2 >>> a.pop(1) 3 3 4 >>> a 5 [4, 5] 6  7 # 一样,当超越列表的下表索引时,抛出IndexError的很是 8 >>> a.pop(7) 9 Traceback (most recent call last):10   File "", line 1, in 11 IndexError: pop index out of range
复制代码

9、怎样毗连两个列表
  1. 1 listone = [1, 2, 3]2 listtwo = [4, 5, 6]3 4 mergedlist = listone + listtwo5 6 print(mergelist)7 >>>8 [1, 2, 3, 4, 5, 6]
复制代码

列表实现了 + 的运算符重载,使得 + 不但支持数值相加,还支持两个列表相加,只要你实现了 工具的 add操纵,任何工具都可以实现 + 操纵,例如:
  1. 1 class User(object): 2     def __init__(self, age): 3         self.age = age 4  5     def __repr__(self): 6         return 'User(%d)' % self.age 7  8     def __add__(self, other): 9         age = self.age + other.age10         return User(age)11 12 user_a = User(10)13 user_b = User(20)14 15 c = user_a + user_b16 17 print(c)18 19 >>>20 User(30)
复制代码

10、怎样随机获得列表中的某个元素
  1. 1 import random2 items = [8, 23, 45, 12, 78]3 4 >>> random.choice(items)5 786 >>> random.choice(items)7 458 >>> random.choice(items)9 12
复制代码


免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 淄博新闻网-淄博日报 淄博晚报 淄博财经新报 掌中淄博 淄博专业新闻资讯发布网站 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表