📜  强大的单行Python代码

📅  最后修改于: 2022-05-13 01:55:08.870000             🧑  作者: Mango

强大的单行Python代码

Python是一种广泛使用的通用高级编程语言。 Python程序通常比Java等其他编程语言小。程序员必须输入相对较少的语言,并且语言的缩进要求使它们始终可读。但是,使用一些单行代码可以使Python程序更加简洁。这些可以通过输入更少的代码来节省时间。

Python中的单行代码

One-Liner #1:在列表中输入空格分隔的整数:

假设您想从控制台获取空格分隔的输入,并且您想将其转换为 List。为此,可以使用将int()方法和input().split()方法作为参数的map()函数。这里int()方法用于将输入转换为int类型,而input().split()方法用于从控制台获取输入并用空格分割输入。下面是实现。

lis = list(map(int, input().split()))

注意:要了解有关Python map()函数的更多信息,请单击此处。

One-Liner #2:输入二维矩阵(当条目按行给出时):

下面给出了在输入二维矩阵时想到的最简单的方法。

# Input for row and column
R = int(input()) 
C = int(input()) 
  
matrix = [] 
  
# for loop for row entries 
for i in range(R):          
    a =[] 
  
    # for loop for column entries 
    for j in range(C):
         a.append(int(input())) 
    matrix.append(a) 

上面的代码可以写成一行,这样更简洁,更节省时间,特别是对于有竞争力的程序员。

# Input for row and column
R = int(input())
C = int(input())
  
# Using list comprehension for input
matrix = [[int(input()) for x in range (C)] for y in range(R)] 

One-Liner #3:我们知道这一事实,但有时我们在翻译其他语言时倾向于忽略它。这是交换两个数字。最幼稚的做法是:

temp = a
a = b
b = temp

然而, Python也为此提供了单线。 Pythonic的方式是:

# to swap two numbers a and b
a, b = b, a

One-Liner #4 Lambda 函数(匿名函数) – Lambda 函数是Python单线函数,通常在要评估表达式时使用。

例如,假设我们要创建一个函数,该函数返回作为参数传递的数字的平方。这样做的正常方法是:

def sqr(x):
    return x * x
  
print(sqr(5))

输出:

25

Lambda函数替换要评估单个表达式的函数。

sqr = lambda x: x * x
print(sqr(5))

输出:

25

One-Liner #5列表推导式——这是一种创建列表的简洁方式。我们可以使用列表推导来代替通常的方式。

例如,我们想要创建一个直到 11 的偶数列表。这样做的正常方法是:

evenNumbers =[]
for x in range(11):
    if x % 2 == 0:
        evenNumbers.append(x)
  
print(evenNumbers)

输出:

[0, 2, 4, 6, 8, 10]

蟒蛇方式:

evenNumbers =[x for x in range(11) if x % 2 == 0]
print(evenNumbers)

输出:

[0, 2, 4, 6, 8, 10]

One-Liner #6:这个技巧在使用 if-else 或 while 循环时可能会有所帮助。而不是这样做——

if m == 1 or m == 2 or m == 3:
    pass

我们可以将其编码为:

if m in [1, 2, 3]:
    pass

One-Liner #7:有多种方法可以在Python中反转列表。
Pythonic 反转列表的方法:

  • 使用切片技术——这种技术在反转时创建列表的副本。它占用更多的内存。
lis = [1, 2, 3]
reversed_list = lis[::-1]
  
print(reversed_list)

输出:

[3, 2, 1]
  • 使用 reverse函数- 它就地反转列表对象的内容。
lis = [1, 2, 3]
lis.reverse()
  
print(lis)

输出:

[3, 2, 1]

One-Liner #8:您可以将此视为挑战。制作单线Python模式。

例如,使以下代码简洁为一行。

for i in range(0, 5): 
        
        for j in range(0, i + 1): 
            # printing stars 
            print("* ", end ="") 
         
        # ending line after each row 
        print("\r")

输出:

* 
* * 
* * * 
* * * * 
* * * * * 

简明扼要地写在一行中很有趣。

n = 5
  
# one liner code for half pyramid pattern
print('\n'.join('* ' * i for i in range(1, n + 1)))

输出:

* 
* * 
* * * 
* * * * 
* * * * *

One-Liner #9寻找阶乘。找到阶乘的正常方法是迭代直到该数字并在每次迭代中乘以该数字。

n = 5
fact = 1
    
for i in range(1, n + 1): 
    fact = fact * i 
print (fact) 

输出:

120

我们可以使用math.factorial(x) - 它返回 x 的阶乘。但如果数字为负数或非整数,则会引发值错误。

import math
  
  
n = 5
print(math.factorial(n))

输出:

120

另一种简洁地找到阶乘的方法是使用reduce()和 lambda 函数。

import functools
  
  
n = 5
print(functools.reduce(lambda x, y: x * y, range(1, n + 1)))

输出:

120

One-Liner #10:在一行中查找集合的所有子集。
通常的方式需要大量的努力,可以在这里看到。可以使用itertools.combinations()以更简单的方式完成

from itertools import combinations
  
  
# list of all subsets of 
# length r (r = 2 in this example) 
print(list(combinations([1, 2, 3, 4], 2)))
输出:
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

One-Liner #11:在Python中读取文件并将其输入到列表中。

file = open('gfg.txt', 'r') 
lis =[]
  
for each in file:
  
    # removing '\n' from the end of the string
    a = each[:-1] 
    lis.append(a)
  
file.close()

一个班轮代码是:

lis = [line.strip() for line in open('gfg.txt', 'r')]