描述一下:
有乙個長長的陣列,裡面的數最大為某個值,比如30;我想從裡面提取陣列,盡可能接近這個值,把所有可能的,不重複的結果以列表巢狀的方式返回來;
基本思路:
將列表字元元素轉換為整數並排序;
獲取乙個列表中的一組數,讓他們相加的結果接近於給定數;
去除找到的元素,把提取的一陣列組成的新列表;
判斷最後乙個值,結束程式;
'''
用於獲取接近某個值的列表
'''def ls_to_int(ls):
'''將列表字元元素轉換為整數並排序
:param ls:需要轉換的列表
:return:轉換後的列表
'''ls = list(map(int, ls))
ls = list(sorted(ls, reverse=true))
return ls
def remove_ls(ls, ls_add):
'''去除找到的元素
:param ls: 原表
:param ls_add: 原表中提取的一部分數值組成的新列表
:return: 去除ls_add後的ls
'''for i in range(len(ls_add)):
remove_value = ls.index(ls_add[i])
ls.pop(remove_value)
return ls
def get_ls_equal_num(ls, num):
'''獲取乙個列表中的一組數,讓他們相加的結果接近於給定數
:param ls: 列表
:param num: 接近值
:return: 排序在前的,並接近給定值的一組數列表
'''ls_add =
x = 0
for i in range(len(ls)):
# print('-' * 30 + str(i))
x = sum(ls_add)
# print('x的當前值{}'.format(x))
if x > num:
ls_add.remove(ls[i - 1])
# print('彈出的值{}'.format(ls[i - 1]))
# print('加入當前的ls[i]值{}'.format(ls[i]))
# 判斷最後乙個值
if sum(ls_add) > num:
ls_add.pop()
return ls_add
ls = ['1', '30', '30', '30', '30', '1', '27', '23', '1', '17', '15', '11', '9', '7', '6', '2', '2', '2', '1', '1']
print(ls)
def get_all_close2num(ls):
'''獲取所有接近30的列表
:param ls: 需要查詢的列表
:return: 所有接近值列表的列表
'''ls = ls_to_int(ls)
ls_ =
while len(ls) > 0:
ls_add = get_ls_equal_num(ls, 30)
# print(ls_add)
ls = remove_ls(ls, ls_add)
return ls_
ls = get_all_close2num(ls)
print(ls)
python獲取字典或者列表中的某個值
獲取字典中的某個值 字典 key 當key不存在,會報錯 keyerror 字典.get key key不存在不會報錯,返回none,也可指定返回值 dict1 print dict1.get a 不存在 print dict1 a 獲取列表中的某個值 列表 index 索引位置,從0開始,如果超過...
獲取某行某列的值
獲取某行某列的值 迴圈方式 param row 行數 param col 列數 return number function getval row,col tmp arr for i 1 i row i else return tmp arr row col echo getval 6,2 獲取某行...
GridView獲取隱藏列的值
最近試著看了一下asp.net,以前開發過一些web的系統,但是後來一直沒在搞web的了,所以web方面的知識都忘記的差不多了,現在遇到一些問題就記下來,以便日後檢視。在gridview裡面獲取隱藏列的值,有時候一些key欄位不想讓使用者看見,但是後台又需要使用這個關鍵字段去做一些操作,如果使用普通...