def permute(nums):
def backtrack(path, options):
if len(path) == len(nums):
# 当前path已包含所有元素,是一个全排列,加入结果列表
result.append(path[:]) # 注意这里需要深拷贝
return
for i in range(len(options)):
# 选择当前元素加入到path中
path.append(options[i])
# 递归,但排除当前已选择的元素
backtrack(path, options[:i] + options[i + 1:])
# 撤销选择
path.pop()
result = []
backtrack([], nums)
return result
测试函数
nums = [1, 2, 3, 4]
for perm in permute(nums):
print(perm)
money=300000
fee=50
base=10000
data=[(100000,0.01),(200000,0.009),(500000,0.008)]
if money>10000:
for x in data:
if money<=x[0]:
fee=fee+(money-base)x[1]
break
else :
fee=fee+(x[0]-base)x[1]
base=x[0]
def permute(nums):
def backtrack(path, options):
if len(path) == len(nums):
测试函数
nums = [1, 2, 3, 4]
for perm in permute(nums):
print(perm)
money=300000
fee=50
base=10000
data=[(100000,0.01),(200000,0.009),(500000,0.008)]
if money>10000:
for x in data:
if money<=x[0]:
fee=fee+(money-base)x[1]
break
else :
fee=fee+(x[0]-base)x[1]
base=x[0]
Python的基本数据结构
str(第5章),list(重点),tuple,dict(重点),set,frozenset
其中系列型数据包括str,list,tuple.
#
Python中的列表list:
定义:
性质特征:
相关的运算:索引、切片、连接、乘,in
基本操作(CRUD):
创建:
#
查询:
#
增加:
#
修改:
#
删除:
#
有关的内置函数:
有关的内置函数:
len() 计算序列的长度,即返回序列中包含多少个元素。
max() 找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。
min() 找出序列中的最小元素。
list() 将序列转换为列表。
str() 将序列转换为字符串。
sum() 计算元素和。
sorted() 对元素进行排序。
reversed(): 反向序列中的元素。
enumerate():将序列组合为一个索引序列,多用在 for 循环中。
#
#
专属的类函数:
创建
a=list([1,2,3, ]);
print(type(a),a)
a=[2,(3,7), {}, 3,3,"23234",[], 343,34,[3,4,"Hello"]]
a=[ x*2 for x in range(51)] #列表生成式
a=[ x**0.5 for x in range(10) if x%2==0]
a=list("Hello") #str,(), [], {}, set()
a=list( (1,"34") ) #元组
a=list( {1:2, 2:3} ) #字典
a=list( {1,2,3,4} ) #集合
a=list( range(3,10 ) ) #iterable 可遍历的数据集
访问
索引法 单一元素
print( a[2])
for x in range(len(a)):
print(a[x])
切片
a=list( range(10 ) ) #iterable 可遍历的数据集
b=a[:3:]
遍历
相加(拼接), 相乘
in /not in
CRUD:增删改操作
del a[5]
del a
a[3]=a[3]*10
for x in a:
x=0
for i in range(len(a)):
a[i]=a[i]*10
a.append(999)
a.insert(3,333)
a.remove(333)
c=a.pop( ) #delete
a.sort()
a.reverse()
c=a.index(3)
c=a.count(4)
c=sum(a)
c=list(reversed(a))
c.append(44)
c=list(sorted(c))
print(f"a={a}")
print(f"b={b}")
print(f"c={c}")
查询文档或类成员
b=dir(list)
print(type(b),b)
data=( (10000,100000, 0.025),
(100000, 200000, 0.02),
(200000, 500000, 0.015),
(500000, 1000000, 0.01),
(500000, 1000000, 0.009),
(1000000, 1E14, 0.008)
)
money=14456
fee=50
base=0
for x in data:
if money<x[0]:
break;
elif x[0]<=money<x[1]:
fee=fee+(money-x[0])x[2]
break;
elif money>=x[1]:
fee = fee + ( x[1]- x[0]) x[2]
print(f"fee={fee}")
字典
b=[1,2,3]
a=( 3,4 , b)
b.append(555)
c=dict.fromkeys([1,2,3,4], 0)
for x in c:
print(c[x])
print(c)