Python 獲取接近某個值的列表

2021-09-13 20:05:18 字數 1754 閱讀 9546

描述一下:

有乙個長長的陣列,裡面的數最大為某個值,比如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欄位不想讓使用者看見,但是後台又需要使用這個關鍵字段去做一些操作,如果使用普通...