本文目錄一覽:
- 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)
源代碼(注意源代碼的縮進)
原創文章,作者:MAVQ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/149656.html