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

列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助。

注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑。为此小编建了个Python全栈免费答疑交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!

1、迭代列表时如何访问列表下标索引

普通版:

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

>>>
0 --> 8
1 --> 23
2 --> 45

优雅版:

for index, item in enumerate(items):
    print(index, "-->", item)

>>>
0 --> 8
1 --> 23
2 --> 45

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

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

>>>
1 --> 8
2 --> 23
3 --> 45

2、append 与 extend 方法有什么区别

append表示把某个数据当做新元素追加到列表的最后面,它的参数可以是任意对象

x = [1, 2, 3]
y = [4, 5]
x.append(y)
print(x)

>>>
[1, 2, 3, [4, 5]]

extend 的参数必须是一个可迭代对象,表示把该对象里面的所有元素逐个地追加到列表的后面

x = [1, 2, 3]
y = [4, 5]
x.extend(y)
print(x)

>>>
[1, 2, 3, 4, 5]

# 等价于:
for i in y:
    x.append(i)

3、检查列表是否为空

普通版:

if len(items) == 0:
    print("空列表")

或者

if items == []:
    print("空列表")

优雅版:

if not items:
    print("空列表")

4、如何理解切片

切片用于获取列表中指定范的子集,语法非常简单

items[start:end:step]
从 start 到 end-1 位置之间的元素。step 表示步长,默认为1,表示连续获取,如果 step 为 2 就表示每隔一个元素获取。

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> a[3:8] # 第3到第8位置之间的元素
[4, 5, 6, 7, 8]

>>> a[3:8:2] # 第3到第8位置之间的元素,每隔一个元素获取
[4, 6, 8]

>>> a[:5]   # 省略start表示从第0个元素开始
[1, 2, 3, 4, 5]

>>> a[3:]  # 省略end表示到最后一个元素
[4, 5, 6, 7, 8, 9, 10]

>>> a[::]  # 都省略相当于拷贝一个列表,这种拷贝属于浅拷贝
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

5、如何拷贝一个列表对象

第一种方法:

new_list = old_list[:]

第二种方法:

new_list = list(old_list)

第三种方法:

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

6、如何获取列表中的最后一个元素

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

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

10
>>> a[-1]
10

7、如何对列表进行排序

列表排序有两种方式,一种是列表自带的方式 sort,一种是内建函数 sorted。复杂的数据类型可通过指定 key参数进行排序。由字典构成的列表,根据字典元素中的age字段进行排序:


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‘}]

列表有 sort方法,用于对原列表进行重新排序,指定 key 参数,key 是匿名函数,item 是列表中的字典元素,我们根据字典中的age进行排序,默认是按升序排列,指定 reverse=True 按降序排列

items.sort(key=lambda item: item.get("age"), reverse=True)

>>>
[{‘name‘: ‘Homer‘, ‘age‘: 39}, {‘name‘: ‘cater‘, ‘age‘: 20}, {‘name‘: ‘Bart‘, ‘age‘: 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}]

8、如何移除列表中的元素

删除列表中的元素有三种方式

remove 移除某个元素,而且只能移除第一次出现的元素

>>> a = [0, 2, 2, 3]
>>> a.remove(2)
>>> a
[0, 2, 3]

# 如果要移除的元素不在列表中,则抛出 ValueError 异常
>>> a.remove(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list·
del 根据指定的位置移除某元素

>>> a = [3, 2, 2, 1]
# 移除第一个元素
>>> del a[1]
[3, 2, 1]

# 当超出列表的下表索引时,抛出IndexError的异常
>>> del a[7]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

pop 与del 类似,但是 pop 方法可以返回移除的元素

>>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]

# 同样,当超出列表的下表索引时,抛出IndexError的异常
>>> a.pop(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop index out of range

9、如何连接两个列表

listone = [1, 2, 3]
listtwo = [4, 5, 6]

mergedlist = listone + listtwo

print(mergelist)
>>>
[1, 2, 3, 4, 5, 6]

列表实现了 + 的运算符重载,使得 + 不仅支持数值相加,还支持两个列表相加,只要你实现了 对象的 add操作,任何对象都可以实现 + 操作,例如:

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_b

print(c)

>>>
User(30)

10、如何随机获取列表中的某个元素

import random
items = [8, 23, 45, 12, 78]

>>> random.choice(items)
78
>>> random.choice(items)
45
>>> random.choice(items)
12

注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑。为此小编建了个Python全栈免费答疑交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12341000.html

时间: 2024-07-31 19:13:38

Python中最常见的10个问题(列表)的相关文章

Python基础学习-Python中最常见括号()、[]、{}的区别

Python中最常见括号的区别: 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. Python中的小括号(): 代表tuple元祖数据类型,元祖是一种不可变序列.创建方法很简单,大多数时候都是小括号括起来的. 1 >>> tup = (1,2,3) 2 >>> tup 3 (1, 2, 3) 4 >>> () #空元祖 5 () 6 >>&

(四)Python中的“四大才子”(字符串、列表、字典、集合)

前戏:在python中把数据序列分为可变(mutable)和不可变(immutable)两种 不可变:string.int.float.tuple 特点:相同对象只是占用一个内存地址,不管有多少个变量引用它,例如a=1,b=1 由于是不可变的,每次必须创建新的对象,之前不用的对象如果没有引用指向它,Python垃圾回收机制会自动清理掉 可变:list.dict 特点:相同对象,每次引用它都会在内存中开辟一块新地址来保存它,但是当我们对他的值进行操作时,内存地址是不会发生变化的 总结:python

Python中.format()常见的用法

format()格式化输出 format():把传统的%替换为{}来实现格式化输出 format()常见的用法: 其实就是format()后面的内容,填入大括号中(可以按位置,或者按变量) '数字{1}{2}和{0}'.format("123",456,'789') >>>'数字456789和123' #这里注意有两层大括号,输出的结果只有一层大括号 '数字{{{1}{2}}}和{0}'.format("123",456,'789') >&g

python中dataframe常见操作:取行、列、切片、统计特征值

mport numpy as npimport pandas as pd# iloc 主要用于索引取值 df = pd.DataFrame(np.arange(20).reshape(5, 4), index=list('ABCDE'), columns=list('wxyz'))print(df)# 取指定行print(df.head(2))print(df[1:2])print(df.tail(4)) # 统计列数print(df.columns.size) # 统计数据行数print(le

Python中的常见内置类型

# 1. None (全局只有一个) a = None b = None print(id(a) == id(b)) # True # 2. 数值 int float complex(复数) bool # 3. 迭代类型 # 4. 序列类型 list bytes.bytearray.memoryview(二进制序列) range tuple str array # 5. 映射(dict) # 6. 集合 set frozenset # 7. 上下文管理类型 # 8. 其他 模块类型 class和

python中获取指定目录下所有文件名列表的程序

http://blog.csdn.net/rumswell/article/details/9818001 # -*- coding: utf-8 -*-#~ #----------------------------------------------------------------------#~ module:wlab#~ Filename:wgetfilelist.py#~ Function :#~ def IsSubString(SubStrList,Str)#~ def GetF

Python中几种数据结构的整理,列表、字典、元组、集合

列表:shoplist = ['apple', 'mango', 'carrot', 'banana']字典:di = {'a':123,'b':'something'}集合:jihe = {'apple','pear','apple'}元组: t = 123,456,'hello' 1.列表    空列表:a=[]    函数方法:a.append(3)      >>>[3]              a.extend([3,4,5])     >>>[3,3,4,

python 中函数的参数

一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数参数之间用逗号分隔,调用的时候的参数必须与定义的时候相同,且参数顺序与形参一一对应. ? 1 2 3 4 5 6 7 8 9 def myfunction(a, b):     print a,b #正确调用 myfunction(3,7) #错误调用 myfunction(3) myfunctio

说说Python中的闭包 - Closure

转载自https://segmentfault.com/a/1190000007321972 Python中的闭包不是一个一说就能明白的概念,但是随着你往学习的深入,无论如何你都需要去了解这么一个东西. 闭包的概念 我们尝试从概念上去理解一下闭包. 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包.闭包可以用来在一个函数与一组"私有"变量之间创建关联关系.在给定函数被多次调用的过程中,这些私有变量能够保持其持久性.-- 维基百科)