STL之python中list

本文详细介绍了Python中列表的基本操作,包括声明、增加、删除、修改和查找元素的方法。并通过一个具体算法题目,展示了如何利用列表解决实际问题,适用于初学者和需要复习列表操作的开发者。

样例题:https://codeforces.com/contest/1234/problem/B1

主要是需要对每个数字 Ai 保存的位置进行记录,Ai 最大是1e9,会导致数组保存不了,于是想到python中的list

list声明:

mylist = []
print (type(mylist))

list增加:

list = [1,2,3,4]
list.append(5)
list.insert(2,6)
print (list)
#[1,2,6,3,4,5]

list删除:

####
x = list.pop()
#x = 5
#list = [1,2,6,3,4]

list.remove(7)
#ValueError: list.remove(x): x not in list

list.remove(6)
print (list)
#list = [1,2,3,4]

list修改:

####
list[1] = 10
print (list)
#list = [1, 10, 3, 4]

list查找:

#list = [1, 10, 3, 4]
list.count(1)
#1
list.count(0)
#0
list.index(1)
#0
list.index(3)
#2
list.index(0)
#ValueError: 0 is not in list

if 0 in list:
    print ("0 is in list")
else:
    print ("0 is not in list")

其他操作:

list = [1, 10, 3, 4, 'a', 'Aa', 'Abb', 'Aba']
list.reverse()
list = list[::-1]

list.sort()
#list = [1, 3, 4, 10, 'Aa', 'Aba', 'Abb', 'a']

for i, v in enumerate(list):
    print ('index = %s, value = %s' % (i, v))

print (max(list))
#'a'
print (min(list))
#1

备注:

reverse操作是按照输入顺序倒序;sort操作是按照先数字从小到大,再按照字母序从小到大排序

 

样例题代码:

    n, k = map(int, input().split())
    #print ('n =', n, end = '\n')
    #print ('k =', k, end = '\n')
    x = map(int, input().split())
    #print ('x =', x)
    ans = []
    for i in x:
    	if i not in ans:
    		if len(ans) == k:
    		#delete last one
    			del ans[-1]
    		#ans.append(i)
    		ans.insert(0, i)
    		#print (ans)
    print (len(ans))
    for i in range(0, len(ans) - 1):
    	print (ans[i], end = ' ')
    print (ans[-1])

 

### Python中的标准模板库(STL)等价物 Python本身并没有像C++那样的Standard Template Library (STL),但它提供了许多内置模块和数据结构来实现类似的用途。以下是关于如何在Python中使用类似于STL的功能的一些说明。 #### 迭代器与生成器 Python支持通过定义`__iter__()`和`__next__()`方法创建自定义迭代器[^1]。这使得我们可以轻松地在一个对象上执行for循环操作。例如: ```python class ReverseIterator: def __init__(self, lst): self._lst = lst self._index = len(lst) - 1 def __iter__(self): return self def __next__(self): if self._index == -1: raise StopIteration item = self._lst[self._index] self._index -= 1 return item ``` 此代码片段展示了如何构建一个反向迭代器,它允许我们从列表的末端向前遍历元素。 #### 容器类 虽然Python不提供专门的容器类头文件如C++ STL那样,但是它的集合类型——list、tuple、set以及dictionary——已经非常强大并能满足大多数需求。对于更复杂的数据处理任务,则可利用collections模块内的高级数据类型,比如deque、defaultdict、namedtuple等等[^4]。 #### 算法部分 Python的标准库也包含了丰富的算法工具。例如itertools模块就提供了大量用于高效循环的操作函数;functools则有助于高阶编程模式的应用。另外还有operator模块可以帮助编写更加简洁明了的表达式。 #### 文件嵌入演示 如果想查看实际应用案例的话,在官方发布的源码包里有一个名为demo.c的例子可供参考学习[^2]。 #### 邮件解析独立性 值得注意的是某些特定功能并不依赖其他组件就能正常运作。比如说emails这个模组就能够单独运行而无需ymlparsers的支持及其关联项[^3]。 ### 结论 综上所述,尽管Python缺乏形式上的STL概念,但凭借其灵活的设计理念加上众多实用性强的标准库成员,完全可以达成甚至超越传统意义上所谓的“STL”所能完成的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值