Python列表常用方法总结

二、列表

1、添加元素

l.append(x)将x作为整体插入到列表

#append方法
a_list = ['string',20,-2]
a_list.append('fkit')
print(a_list)
a_tuple = (3.4,5.6)
a_list.append(a_tuple)
print(a_list)
a_list.append(['a','b'])
print(a_list)
['string', 20, -2, 'fkit']
['string', 20, -2, 'fkit', (3.4, 5.6)]
['string', 20, -2, 'fkit', (3.4, 5.6), ['a', 'b']]

l.extend(x)将x中的元素分别插入到列表

#extend方法
b_list = ['a',30]
b_list.extend((-2,3.1)) 
print(b_list)
['a', 30, -2, 3.1]

l.insert(index,x)将x插入到index索引处

#insert方法
c_list = list(range(1,6))
c_list.insert(3,'CRAZY')
print(c_list)
c_list.insert(3,tuple('crazy'))
print(c_list)
[1, 2, 3, 'CRAZY', 4, 5]
[1, 2, 3, ('c', 'r', 'a', 'z', 'y'), 'CRAZY', 4, 5]

2、删除元素

del l[index]删除列表索引为index处的元素

#del方法
a_list = ['crazy',20,-2.4,(3,4),[2,'asd']]
b_list = [90,'ok',8.78]
del a_list[2]
print(a_list)
a_list.extend(b_list)
print(a_list)
a_list.insert(5,5.6)
print(a_list)
['crazy', 20, (3, 4), [2, 'asd']]
['crazy', 20, (3, 4), [2, 'asd'], 90, 'ok', 8.78]
['crazy', 20, (3, 4), [2, 'asd'], 90, 5.6, 'ok', 8.78]

l.remove(x)将列表中第一个x元素删除

#remove、clear方法
c_list = [20,9.8,20,'srint',[1,2.3]]
c_list.remove(20)
print(c_list)
c_list.clear()
print(c_list)
c_list.extend(a_tuple)
print(c_list)
[9.8, 20, 'srint', [1, 2.3]]
[]
[3.4, 5.6]

(注:若在for循环中使用容易出现跳过元素的现象)

【例】力扣第27题移除元素:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

该题如果使用for遍历元素,当找到指定元素时删除,则会漏过连续的元素。正确解法如下

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        if not nums:
            return 0
        while val in nums:
                nums.remove(val)
        return len(nums)

3、其他方法

(1)l.count(x)函数用于统计列表中某个元素出现的次数

(2)l.index(x)函数用于获取某个元素在列表中出现的位置,若不存在x将引发ValueError异常,可使用try…catch…进行处理

a_list = [2,30,2,'sasd',90]
print(a_list.count(2))
print(a_list.index(2,1))
2
2

(3)sum()函数对列表中所有元素求和

l = [3,4,5]
print(sum(l))
12

(4)l.pop()函数将列表当作栈执行弹出操作

#栈操作
stack =[]
stack.append('fkit')
stack.append('asdsad')
stack.append('qweqwewe')
a = stack.pop()
print(a)
print(stack)
stack.pop()
print(stack)
qweqwewe
['fkit', 'asdsad']
['fkit']

(6)l.reverse()用于将列表l反转,l2 = reversed(l)将l反转并额外生成一个列表l2

#reverse
a_list = list(range(1,8))
a_list.reverse()
print(a_list)
[7, 6, 5, 4, 3, 2, 1]

(7)l.sort()将列表升序排序。

#sort
a_list = [3,4,-2,-30,14,9.3,2.4]
b_list = sorted(a_list)
print(b_list)
[-30, -2, 2.4, 3, 4, 9.3, 14]

l2 = sorted(l)将l排序后额外生成一个列表l2。

sort()可以设置key值实现按指定参数排序,如l.sort(key = len , reverse = False)实现将l中的元素从长到短进行排序。

#sort中的key和reverse
c_list = ['asd','Koasid','q','longger']
c_list.sort(key = len ,reverse = True)
print(c_list)

结果为

['longger', 'Koasid', 'asd', 'q']

4、序列相关方法

(1)in关键字判断指定元素是否在列表中

(2)len()函数用来获取列表的长度

(3)max() min()函数用来获取列表中最大和最小的元素

5、加法和乘法

order_endings = ('st','nd','rd')\
+('th',)*3+('st','nd','rd')
print(order_endings)
('st', 'nd', 'rd', 'th', 'th', 'th', 'st', 'nd', 'rd')

6、封包和解包

元组可以视为元素不可改变的列表,并且使用率比较低,因此就放在这里一并写了

封包是将多个元素打包成一个元组,而解包讲一个元组里面的值分别赋值给多个元素

封包和解包常用于交换两个元素的值a,b = b,a

#序列封包和解包

a,b,c = b,c,a
print(a)
print(b)
print(c)

vals = 10,20,30
a,b,c= 1,2,3
print(vals)
print(type(vals))
print(vals[1])

a_tuple = (1,3,5,7,9)
a,b,c,d,e = a_tuple
print(a,b,c,d,e)

first,second,*rest = range(10)
print(first)
print(second)
print(*rest)
print(type(rest))
2
3
1
(10, 20, 30)
<class 'tuple'>
20
1 3 5 7 9
0
1
2 3 4 5 6 7 8 9
<class 'list'>

7、enumerate()函数(重点)

enumerate()是python的内置函数,用于将一个可遍历的数据对象(如列表、元组或字符串等)组合为一个索引序列,同时列出数据和数据下标,多用于for循环。

【例】力扣第1160题拼写单词:给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。

from collections import Counter
class Solution:
    def countCharacters(self, words: List[str], chars: str) -> int:
        cnt = 0
        dic_chars = Counter(chars)
        for w in words:
            dic_words = Counter(w)
            for key in dic_words:
                if dic_words[key] > dic_chars[key]:
                    break
            #如果遍历完了仍然没有break则执行else
            else:
                cnt += len(w)
        return cnt

        cnt = 0
        dic_chars = Counter(chars)
        for w in words:
            dic_words = Counter(w)
            for key in dic_words:
                if dic_words[key] > dic_chars[key]:
                    break
            else:
                cnt+=len(w)
        return cnt
发布了8 篇原创文章 · 获赞 0 · 访问量 8

猜你喜欢

转载自blog.csdn.net/weixin_42713642/article/details/105446941