个性化阅读
专注于IT技术分析

竞争性编码的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 Counter
  
arr = [ 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 heapq
  
grades = [ 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 heapq
  
stocks = {
     '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 * 2
  
new_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)

使用加入()该函数具有高效的内存和易于编写的特性, 这无疑是优于先前代码的优点。

个别地, 这些功能看似无害, 但在限时编码环境中肯定会派上用场, 因为它们可以在非常短的代码中提供大量功能。所讨论的功能具有非常特定的应用, 在竞争性编码中的作用类似于快捷键或快捷键。掌握这些有用的技巧可能会给某人所寻找的竞争优势!

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

赞(0) 打赏
未经允许不得转载:srcmini » 竞争性编码的Python技巧
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏