竞争性编码的Python技巧

Python是一种这样的编程语言, 它使一切变得简单而直接。任何精通python竞争编码的人都会对它的许多功能沉迷。以下列出了我发现的一些很酷的功能, 它们在竞争性编码环境中最有用。
1. Counter Package的most_common函数。
这可能是我使用过的最有用的函数,在编写任何python代码时,它总是浮现在我的脑海中。这个函数分析列表/字符串,并根据出现次数降序返回列表/字符串中的前n个实体,其中n是程序员指定的数字。各个实体将在一个元组中返回它们的出现次数,在需要时可以很容易地引用/打印。

# Code to find top 3 elements and their counts # using most_common from collections import Counterarr = [ 1 , 3 , 4 , 1 , 2 , 1 , 1 , 3 , 4 , 3 , 5 , 1 , 2 , 5 , 3 , 4 , 5 ] counter = Counter(arr) top_three = counter.most_common( 3 ) print (top_three)

输出如下:
[(1, 5), (3, 4), (4, 3)]

输出元组清楚地指出1已发生5次, 3已发生4次, 4已发生3次。
2. heapq软件包的n个最大/n个最小函数。
这个函数帮助返回任何列表中最大/最小的前n个元素,这里n也是程序员指定的数字。
# Python code to find 3 largest and 4 smallest # elements of a list. import heapqgrades = [ 110 , 25 , 38 , 49 , 20 , 95 , 33 , 87 , 80 , 90 ] print (heapq.nlargest( 3 , grades)) print (heapq.nsmallest( 4 , grades))

输出如下:
[110, 95, 90] [20, 25, 33, 38]

输出的第一行给出列表等级中存在的最大数字中的3个。同样, 输出的第二行将打印出列表等级中存在的最小元素中的4个。另一个专业此功能的优点在于它不会忽略重复。所以代替?如果我们要放置数组的长度, 那么我们将得到整个排序数组本身!
3. 字典和概念的压缩字典
python中的字典因其提供的独特功能而令人着迷。它们以类似数组的结构形式存储为键和值对。每个值都可以通过其对应的键访问。
zip函数用于将两个列表连接在一起, 或者我们甚至可以将字典中的键和值对作为单个列表连接在一起。在以下代码片段中将清楚说明此概念的应用。
# Python code to demonstrate use of zip. import heapqstocks = { 'Goog' : 520.54 , 'FB' : 76.45 , 'yhoo' : 39.28 , 'AMZN' : 306.21 , 'APPL' : 99.76 }zipped_1 = zip (stocks.values(), stocks.keys())# sorting according to values print ( sorted (zipped_1))zipped_2 = zip (stocks.keys(), stocks.values()) print ( sorted (zipped_2)) #sorting according to keys

输出如下:
[(39.28, 'yhoo'), (76.45, 'FB'), (99.76, 'APPL'), (306.21, 'AMZN'), (520.54, 'Goog')] [('AMZN', 306.21), ('APPL', 99.76), ('FB', 76.45), ('Goog', 520.54), ('yhoo', 39.28)]

map功能。
这个函数是一个偷偷摸摸的小捷径, 它使我们可以在一个非常值列表中实现一个简单的函数。
非常规方式
。下面的示例将对此功能进行简单的应用。该函数将函数名称和需要应用函数的列表名称作为参数。
# Python code to apply a function on a list income = [ 10 , 30 , 75 ]def double_money(dollars): return dollars * 2new_income = list ( map (double_money, income)) print (new_income)

输出如下:
[20, 60, 150]

在这里, 我们只是实现了一个简单的函数, 该函数将每个列表值乘以2, 然后将其作为新列表返回。
字符串列表的串联
假设我们得到了一个字符串列表, 我们必须通过串联该列表来给出输出
让我们看一下先前的代码我们正在做什么:
string = "" lst = [ "Geeks" , "for" , "Geeks" ] for i in lst: string + = i print (string)

这种连接字符串列表的方法绝对不是最好的方法, 因为每次都会创建新的字符串
lst = [ "Geeks" , "for" , "Geeks" ] string = ''.join(lst) print (string)

使用加入()该函数具有高效的内存和易于编写的特性, 这无疑是优于先前代码的优点。
个别地, 这些功能看似无害, 但在限时编码环境中肯定会派上用场, 因为它们可以在非常短的代码中提供大量功能。所讨论的功能具有非常特定的应用, 在竞争性编码中的作用类似于快捷键或快捷键。掌握这些有用的技巧可能会给某人所寻找的竞争优势!
【竞争性编码的Python技巧】如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读