本文目录一览:
- 1、python如何根据输入的数字提取字典中对应的键值并组合?
- 2、把‘0000’到‘9999’中的所有数字排列组合打印,用python如何编程?
- 3、如何用Python列出N个数字的所有排列组合
- 4、Python实现,输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接
- 5、Python取随机数排列组合?
- 6、Python列出多个数字组合相加的和最接近或等于某个数的算法?
python如何根据输入的数字提取字典中对应的键值并组合?
你的问题换个说法就是,将输入的数字按位提取出来分别作为 key,得到每个对应的 value 之后输出,所以核心就在于如何将数字的每一位都分开,下面是参考代码:
numstr = input()
nums = list(map(int, numstr))
print(nums)
这样出来的 nums 就是一个数组,每个元素都是一个数字,再用循环或者什么将数组元素作为 key 取出 value 拼接起来即可,后面的代码比较简单就不放了。
把‘0000’到‘9999’中的所有数字排列组合打印,用python如何编程?
import itertools
for i in itertools.permutations('0123456789',4):
print ''.join(i)
百度审批是SB 不解释。。这下子格式可以了吧
如何用Python列出N个数字的所有排列组合
from itertools import combinations, permutations
permutations([1, 2, 3], 2)
itertools.permutations at 0x7febfd880fc0
# 可迭代对象
list(permutations([1, 2, 3], 2)) #排列
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
list(combinations([1, 2, 3], 2)) #组合
[(1, 2), (1, 3), (2, 3)]
Python实现,输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接
你的例子第一列全是 3,我给个例子吧:[321, 32, 3, 4],输出该是 321,32,3,4。
第一个数越大,则应该排在后面,毕竟 4XXX 是比 3XXX 大的。
setp 1: [0][1][2]
3 2 1
3 2
3
4
排序第 0 列,越大的排越后。
ret = [?, ?, ?, 4]
setp 2: [0][1][2]
3 2 1
3 2
3 3 - 补位 3,因为 3 是同 3 组第一个元素。
排序第 1 列,越大的排越后。
ret = [?, ?, 3, 4]
setp 3: [0][1][2]
3 2 1
3 2 3 - 补位 3,因为 3 是同 3 组第一个元素。
排序第 2 列,越大的排越后。323 比 321 大,所以……
ret = [?, 32, 3, 4]
只剩一个,那个排第一:
ret = [321, 32, 3, 4]
以上就是基本思路了。综上可得:
1. 先按 [0] 列分组:
2. 组中每个数都补位到同样长度,然后再排序。
完整代码:
def joinmin(ls):
groups = {}
for item in ls:
prefix = item
n = 0
while prefix 10:
prefix //= 10
n += 1
groups.setdefault(prefix, []).append([item, n])
sorted_keys = list(sorted(groups))
ret = 0
for prefix in sorted_keys:
items = groups[prefix]
max_n = max([t[1] for t in items])
presort_items = []
for item, item_n in items:
padding = item
n = item_n
while max_n n:
padding *= 10
padding += prefix
n += 1
presort_items.append((padding, item, item_n))
for _, item, n in sorted(presort_items):
while n -1:
ret *= 10
n -= 1
ret += item
return ret
不是看在你的分上答的,不过这种小题目蛮有趣的。
Python取随机数排列组合?
没懂你的意思,既然是排列组合,就是针对3个固定元素。
如果3个元素本身就是随机的,就不用排列了,下面的getplans函数也就没有意义,直接循环2-5行代码就好。
Python列出多个数字组合相加的和最接近或等于某个数的算法?
算法 列出这5个数的所有组合,找出组合的和减268的绝对值最小的组合,
完整的Python程序如下
import math
def combine(a,n,num):
real_size=int(math.pow(2, n))
min=abs(sum(a)-num)
min_comb=[]
for i in range(real_size):
min_list=[]
total=0
for j in range(n):
if i (1 j):
min_list.append(a[j])
total=total+a[j]
if abs(total-num)=min:
if abs(total-num)==min:
min_comb.append(min_list)
else:
min_comb=[min_list]
min=abs(total-num)
print(min_comb)
a=[110,120,130,140,150]
num=268
combine(a,len(a),num)
源代码(注意源代码的缩进)