为什么 Python 最适合用于竞赛编程


竞赛编程通常指的是使用合适的 数据结构 编写高效算法的编码。它们在多个层面上测试程序员的技能。

借助算法和数据结构,您必须通过应用不同的逻辑来解决您提出的假设编程问题。您不仅需要解决问题,还需要提出一个非常有效的解决方案,该解决方案具有良好的时间和空间复杂度。

被称为竞赛编程的问题陈述示例可能是 -

给定一个长度为 n 的字符串 s,仅包含小写拉丁字母。

字符串的子字符串是该字符串的连续子序列。因此,字符串“forces”是字符串“codeforces”的子字符串,但字符串“coder”不是。

您的任务是计算从该字符串中精确删除一个子字符串的方法数量,以使所有剩余字符相等(不同字符的数量为零或一个)。

保证 s 中至少有两个不同的字符。

请注意,您可以删除整个字符串,这是正确的。另外,请注意您应该至少删除一个字符。

要解决上述问题,您可以选择任何您喜欢的编程语言。

现在问题出现了,为什么选择 Python 进行竞赛编程?

速度

选择 Python 的原因之一是它可以极大地缩短您编写代码的时间,而是将时间花在思考问题所需的逻辑上。

因为在这种类型的比赛中,时间是关键,程序员编写解决方案的速度越快越好。因此,我上面所说的速度是指程序员编写解决方案的速度,而不是 Python 语言的速度。

丰富的库

Python 拥有各种各样的标准库,这些库可以很好地用于竞赛编程。

以下是选择 Python 进行竞赛编程的其他常见原因 -

i. 常用内置函数

  • Python 提供了一套大量的常用函数,如 count、min、max、sorted 等。这些内置函数非常方便,允许编码人员轻松地继续并跳过为这些琐碎的过程编写代码,这些过程通常非常有用。此外,Python 函数使用其函数的最佳算法。例如,sorted() 函数使用 Timsort 算法,该算法在 O(nlogn) 的最坏情况性能下提供稳定排序。这是最好的排序算法之一,它提供了 O(1) 或恒定运行时间的最佳情况运行时间。

代码

#abs()
print(abs(-7))
#max()
print(max(2, 13, 4, 20))
#memoryview()
print(memoryview(bytes(9)))
#object()
o = object();print(type(o))
#pow()
print(pow(2,6))
#reversed
a = reversed([3, 13, 2, 1]); print(a)
#sorted()
print(sorted([9, 2, 4, 13, 7]))
#sum()
print(sum([2, 9, 12, 19]))
# type()
print (type([]))
print (type({}))
#zip()
print(set(zip([1,2],[3,4,5])))

ii. 列表推导式

  • Python 提供了最好的列表推导式之一。它允许我们编写通常需要 5-20 行代码的 1 行代码。使用列表推导式,您可以嵌套循环和条件

代码

# Iterating through a string Using List Comprehension
l_string = [ letter for letter in 'Tutorialspoint' ]
print( l_string)
#List Comprehensions vs Lambda functions
l_lambda = list(map(lambda x: x, 'Tutorialspoint'))
print(l_lambda)

输出

['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']
['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']

iii. 标准库(一大优势)

  • Python 带有一个非常广泛的标准库,提供了广泛的功能。这些库附带了几个数据结构,消除了手动实现它们的需要,以及 itertools,它是库中非常重要的部分。
  • 例如,您想生成列表的所有可能的排列并将其存储在另一个单个列表中,使用列表推导式和来自 itertools 的排列函数。

Python 标准库

数据类型
字符串
网络
线程
操作系统
压缩
GUI
参数
CGI
复数
FTP
加密
测试
多媒体
数据库
CSV 文件
日历
电子邮件
XML
序列化

iv. 各种各样的数据结构

  • Python 提供了一套大量的数据结构供您在编码中使用,包括字典、集合、元组、列表等等,这些都是标准包。

v. 易用性

Python 语法易于阅读,并且使用 Python 进行编码非常容易和快速。它基本上读起来就像伪代码。

>>> print("hello world!")
hello world!
>>> sum([3, 4, 3,5])
15
>>> max(3, 4, 5, 13,2)
13
>>> min(3, 4, 5, 13, 2)
2

更新于: 2019-07-30

209 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告