作者 | 小F
來源 | 法納斯特
頭圖 | 下載於視覺中國
自從我用Python編寫第一行代碼以來,就被它的簡單性、出色的可讀性和特別流行的一行代碼所吸引。
下面,我將給大家介紹一些Python一行程序。
可能有些你還不知道,但對你未來的Python項目很有用。
1、交換兩個變量
# a = 4 b = 5
a,b = b,a
# print(a,b) >> 5,4
讓我們通過交換兩個變量作爲一個簡單的開始。這是最簡單、最直觀的方法之一,無需使用臨時變量或應用算術操作即可編寫。
2、多個變量賦值
a,b,c = 4,5.5,'Hello'
#print(a,b,c) >> 4,5.5,hello
你可以使用逗號和變量一次性將多個值分配給變量。使用此技術,你可以一次分配多個數據類型。
你可以使用列表將值分配給變量。下面是將列表中的多個值分配給變量的示例。
a,b,*c = [1,2,3,4,5]
print(a,b,c)
> 1 2 [3,4,5]
3、列表中偶數的和
有很多方法可以做到這一點,但最好和最簡單的方法是使用列表索引和sum函數。
a = [1,2,3,4,5,6]
s = sum([num for num in a if num%2 == 0])
print(s)
>> 12
4、從列表中刪除多個元素
del是Python中用於從列表中刪除值的關鍵字。
#### Deleting all even
a = [1,2,3,4,5]
del a[1::2]
print(a)
>[1, 3, 5]
a
5、讀取文件
lst = [line.strip() for line in open('data.txt')]
print(lst)
這裏我們使用列表來處理。
首先,我們打開一個文本文件,並使用for循環,逐行讀取。 最後,使用strip刪除所有不必要的空間。
通過使用列表功能,使得代碼更簡單,更短。
list(open('data.txt'))
##Using with will also close the file after use
with open("data.txt") as f:
lst=[line.strip() for line in f]
print(lst)
6、將數據寫入文件
with open("data.txt",'a',newline='\n') as f:
f.write("Python is awsome")
上面的代碼首先創建一個文件data.txt(如果沒有的話),然後它會在文件中寫Python is awesome。
7、創建列表
lst = [i for i in range(0,10)]
print(lst)
> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
or
lst = list(range(0,10))
print(lst)
我們也可以使用相同的方法創建一個字符串列表。
lst = [("Hello "+i) for i in ['Karl','Abhay','Zen']]
print(lst)
> ['Hello Karl', 'Hello Abhay', 'Hello Zen']
8、映射列表或類型轉換整個列表
有時在我們的項目中,我們需要更改列表中所有元素的數據類型。你想到的第一個方法可能是使用循環,然後訪問列表中的所有元素,然後一個接一個地更改元素的數據類型。
這個方法是老派的,在Python中我們有一個映射函數,可以爲我們做這些工作。
list(map(int,['1','2','3']))
> [1, 2, 3]
list(map(float,[1,2,3]))
> [1.0, 2.0, 3.0]
[float(i) for i in [1,2,3]]
> [1.0, 2.0, 3.0]
9、創建集合
我們用於創建列表的方法也可以用於創建集合。讓我們使用包含範圍內所有偶數的平方根方法來創建一個集合。
#### Square of all even numbers in an range
{x**2 for x in range(10) if x%2==0}
> {0, 4, 16, 36, 64}
10、Fizz Buzz
在這個測試中,我們需要編寫一個程序來打印從1到20的數字。但如果是3的倍數,打印Fizz,如果是5的倍數,打印Buzz,如果同時是3和5的倍數,打印FizzBuzz,否則打印數字。
看起來我們必須使用循環和多個if-else語句。如果你嘗試用其他語言來做,你可能需要寫10行代碼,但是使用Python,我們可以只用一行代碼就實現FizzBuzz。
['FizzBuzz' if i%3==0 and i%5==0
else 'Fizz' if i%3==0
else 'Buzz' if i%5==0
else i for i in range(1,20)]
在上面的代碼中,我們使用列表理解來運行一個從1到20的循環,然後在循環的每次迭代中,我們檢查數字是否能被3或5整除。如果是,那麼我們用Fizz或Buzz替換數值,或者用FizzBuzz數值。
11、迴文
迴文是一個數字或字符串,當它被反轉時看起來是一樣的。
text = 'level'
ispalindrome = text == text[::-1]
ispalindrome
> True
12、用空格分隔的整數到一個列表
lis = list(map(int, input().split()))
print(lis)
> 1 2 3 4 5 6 7 8
[1, 2, 3, 4, 5, 6, 7, 8]
13、Lambda函數
lambda函數是一個小型匿名函數。lambda函數可以接受任意數量的參數,但只能有一個表達式。
# Function that returns square of any number
sqr = lambda x: x * x
sqr(10)
> 100
14、檢查列表中數字的存在
num = 5
if num in [1,2,3,4,5]:
print('present')
> present
15、打印圖案
在Python中,我們只需要一行代碼就可以繪製出令人驚歎的圖案。
n = 5
print('\n'.join('????' * i for i in range(1, n + 1)))
>
????
????????
????????????
????????????????
????????????????????
16、查找階乘
階乘是一個整數和它下面所有整數的乘積。
import math
n = 6
math.factorial(n)
> 720
17、斐波納契數列
一組數字,其中每個數字(斐波那契數)是前面兩個數字的和。最簡單的斐波那契數列1,1,2,3,5,8,13等等。可以使用列表推導式和for循環在一個範圍內創建斐波那契數列。
fibo = [0,1]
[fibo.append(fibo[-2]+fibo[-1]) for i in range(5)]
fibo
> [0, 1, 1, 2, 3, 5, 8]
18、質數
質數是一個只能被自身和1整除的數。例如:2、3、5、7等。爲了在一個範圍內生成質數,我們可以使用帶有filter和lambda的list函數來生成質數。
list(filter(lambda x:all(x % y != 0 for y in range(2, x)), range(2, 13)))
> [2, 3, 5, 7, 11]
19、查找最大數值
findmax = lambda x,y: x if x > y else y
findmax(5,14)
> 14
or
max(5,14)
在上面的代碼中,我們使用lambda函數檢查比較條件,並根據返回的最大值。
或者使用max()內置函數。
20、線性代數
有時候我們需要將列表中的元素縮放2到5倍。下面的代碼解釋瞭如何做到這一點。
def scale(lst, x):
return [i*x for i in lst]
scale([2,3,4], 2)
> [4,6,8]
21、矩陣轉置
您需要將所有行轉換爲列,反之亦然。在Python中,可以使用zip函數在一行代碼中置換一個矩陣。
a=[[1,2,3],
[4,5,6],
[7,8,9]]
transpose = [list(i) for i in zip(*a)]
transpose
> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
22、計數
當我們需要知道某個值在文本中出現的次數時,這是一個重要而有用的用例。在Python中,有re庫可以來幫你完成這項工作。
import re
len(re.findall('python','python is a programming language. python is python.'))
> 3
23、用其他文本替換文本
"python is a programming language.python is python".replace("python",'Java')
> Java is a programming language. Java is Java
24、模擬拋硬幣
這可能不是那麼重要,但當你需要從一組給定的選擇中生成一些隨機選擇時,它會非常有用。
import random
random.choice(['Head',"Tail"])
> Head
25、生成組
groups = [(a, b) for a in ['a', 'b'] for b in [1, 2, 3]]
groups
> [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]
更多精彩推薦
☞三種方法,用Python輕鬆提取PDF中的全部圖片
☞科學“乾飯”,AI 營養師教你
☞GitHub 標星超 26600,TiDB 社區運營的道與術!
☞告別手敲 SQL ?GPT-3 自動幫你寫
點分享點收藏點點贊點在看