學 Python 怎樣才最快,當然是實戰各種小項目,只有自己去想與寫,才記得住規則。今天給大家分享的是 15個極簡任務,初學者可以嘗試著自己實現;Python 開發者也可以看看是不是有沒想到的用法。
1.重復元素判定
以下方法可以檢查給定列表是不是存在重復元素,它會使用 set() 函數來移除所有重復元素。
def all_unique(lst):
return len(lst) == len(set(lst))
x = [1,1,2,2,3,2,3,4,5,6]
y = [1,2,3,4,5]
all_unique(x) # False
all_unique(y) # True
2.字符元素組成判定
檢查兩個字符串的組成元素是不是一樣的。
from collections import Counter
def anagram(first, second):
return Counter(first) == Counter(second)
anagram("abcd3", "3acdb") # True
3.內存占用
下面的代碼塊可以檢查變量 variable 所占用的內存。
import sys
variable = 30
print(sys.getsizeof(variable)) # 24
4.字節占用
下面的代碼塊可以檢查字符串占用的字節數。
def byte_size(string):
return(len(string.encode('utf-8')))
byte_size('') # 4
byte_size('Hello World') # 11
5.打印 N 次字符串
該代碼塊不需要循環語句就能打印 N 次字符串。
n = 2;
s ="Programming";
print(s * n);
# ProgrammingProgramming
6.大寫第一個字母
以下代碼塊會使用 title() 方法,從而大寫字符串中每一個單詞的首字母。
s = "programming is awesome"
print(s.title())
# Programming Is Awesome
7.分塊
給定具體的大小,定義一個函數以按照這個大小切割列表。
from math import ceil
def chunk(lst, size):
return list(
map(lambda x: lst[x * size:x * size + size],
list(range(0, ceil(len(lst) / size)))))
chunk([1,2,3,4,5],2)
# [[1,2],[3,4],5]
8.壓縮
這個方法可以將布爾型的值去掉,例如(False, None, 0, ""),它使用 filter() 函數。
def compact(lst):
return list(filter(bool, lst))
compact([0, 1, False, 2, '', 3, 'a', 's', 34])
# [ 1, 2, 3, 'a', 's', 34 ]
9.解包
如下代碼段可以將打包好的成對列表解開成兩組不同的元組。
array = [['a', 'b'], ['c', 'd'], ['e', 'f']]
transposed = zip(*array)
print(transposed)
# [('a', 'c', 'e'), ('b', 'd', 'f')]
10.鏈式對比
我們可以在一行代碼中使用不同的運算符對比多個不同的元素。
a = 3
print( 2 < a < 8) # True
print(1 == a < 2) # False
11.逗號連接
下面的代碼可以將列表連接成單個字符串,且每一個元素間的分隔方式設置為了逗號。
hobbies = ["basketball", "football", "swimming"]
print("My hobbies are: " + ", ".join(hobbies))
# My hobbies are: basketball, football, swimming
12.元音統計
以下方法將統計字符串中的元音(‘a’, ‘e’, ‘i’, ‘o’, ‘u’)的個數,它是通過正則表達式做的。
import re
def count_vowels(str):
return len(len(re.findall(r'[aeiou]', str, re.IGNORECASE)))
count_vowels('foobar') # 3
count_vowels('gym') # 0
13.首字母小寫
如下方法將令給定字符串的第一個字符統一為小寫。
def decapitalize(string):
return str[:1].lower() + str[1:]
decapitalize('FooBar') # 'fooBar'
decapitalize('FooBar') # 'fooBar'
14.展開列表
該方法將通過遞歸的方式將列表的嵌套展開為單個列表。
def spread(arg):
ret = []
for i in arg:
if isinstance(i, list):
ret.extend(i)
else:
ret.append(i)
return ret
def deep_flatten(lst):
result = []
result.extend(
spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
return result
deep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]
15.列表的差
該方法將返回第一個列表的元素,其不在第二個列表內。如果同時要反饋第二個列表獨有的元素,還需要加一句 set_b.difference(set_a)。
def difference(a, b):
set_a = set(a)
set_b = set(b)
comparison = set_a.difference(set_b)
return list(comparison)
difference([1,2,3], [1,2,4]) # [3]
-END-
掃碼添加請備注:python,進群與宋老師面對面交流:517745409