强大的单行Python代码
Python是一种广泛使用的通用高级编程语言。 Python程序通常比Java等其他编程语言小。程序员必须输入相对较少的语言,并且语言的缩进要求使它们始终可读。但是,使用一些单行代码可以使Python程序更加简洁。这些可以通过输入更少的代码来节省时间。
Refer to the below articles to know more about Python.
- Python basics
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')]