1. 字符串逆序
str = "abcdegfgijlk"
str [ : : - 1 ]
'' . join( reversed ( str ) )
2. 求从10到100中能被3或5整除的数的和
l = [ ]
for i in range ( 10 , 101 ) :
if i % 3 == 0 or i % 5 == 0 :
l. append( i)
print ( l, sum ( l) )
3. 变量交换
a, b = b, a
4. 按升序合并两个list, 并去除重复的元素
s = sorted ( set ( list1 + list2) )
5. 字典推导式
randomdict = { i : random. randint( 10 , 100 ) for i in range ( 1 , 5 ) }
name = [ "张三" , "李四" , "王五" , "李六" ]
sign = [ "白羊座" , "双鱼座" , "狮子座" , "处女座" ]
dict1 = { i : j for i, j in zip ( name, sign) }
print ( dict1)
6. 对列表 lst = [1, -2, 10, -12, -4, -5, 9, 2] 实现排序,按照正的放前面,负的放后面,并且分别按绝对值从小到大
lst. sort( key= lambda x: ( x < 0 , abs ( x) ) )
7. 列表生成式并打乱顺序
from random import shuffle
alist = [ i for i in range ( 10 ) ]
alist2 = list ( range ( 10 ) )
shuffle( alist)
8. 列表中字典元素排序
alist = [ { 'name' : 'a' , 'age' : 20 } , { 'name' : 'b' , 'age' : 30 } , { 'name' : 'c' , 'age' : 25 } ]
alist. sort( key= lambda x: - x[ "age" ] )
print ( alist)
9. 简单实现一个 stack
class Stack :
def __init__ ( self) :
self. values = [ ]
def push ( self, o) :
self. values. append( o)
def pop ( self) :
return self. values. pop( )
s = Stack( )
s. push( 1 )
s. push( 2 )
assert s. pop( ) == 2
assert s. pop( ) == 1
s. push( 3 )
s. push( 4 )
assert s. pop( ) == 4
assert s. pop( ) == 3
10. 输入某年某月某日,判断这一天是这一年的第几天?
from datetime import datetime
def day_of_year ( year, month, day) :
return ( datetime( year, month, day) - datetime( year, 1 , 1 ) ) . days + 1
assert day_of_year( 2021 , 1 , 10 ) == 10
11. 台阶问题/斐波那契
fib = lambda n: n if n <= 2 else fib( n - 1 ) + fib( n - 2 )
12. 变态台阶问题
fib = lambda n: n if n < 2 else 2 * fib( n - 1 )
13. 特殊字符串处理
def string_to_dict ( string) :
d = { }
for kv in string. split( "|" ) :
k, v = kv. split( ":" )
if v. isdigit( ) :
v = int ( v)
d[ k] = v
return d
string = "k:1|k1:2|k2:3|k3:4"
print ( string_to_dict( string) )
string2 = "k:1"
print ( string_to_dict( string2) )
14. 找零算法(动态规划)
def coinChange ( values, money, coinsUsed) :
for cents in range ( 1 , money + 1 ) :
minCoins = cents
for value in values:
if value <= cents:
temp = coinsUsed[ cents - value] + 1
if temp < minCoins:
minCoins = temp
coinsUsed[ cents] = minCoins
print ( '面值为:{0} 的最小硬币数目为:{1} ' . format ( cents, coinsUsed[ cents] ) )
print ( coinsUsed)
if __name__ == '__main__' :
values = [ 25 , 21 , 10 , 5 , 1 ]
money = 63
coinsUsed = { i: 0 for i in range ( money + 1 ) }
print ( coinsUsed)
coinChange( values, money, coinsUsed)