makliu 发表于 2022-7-11 13:09:34

老师布置的新作用,关于python列表; 求大位指导

求各路大侠指导指导。。。

给出两个列表 ;列表的总和为 10的倍数 如

list1 =

list2 =


要求: 把这两个列表分别拆成多个列表且列表的总和为10, 不能改变元素的位置 ;
如:list1 拆成:
    , ,


    list2 拆成:
    , ,

请用代码实现:

jackz007 发表于 2022-7-11 13:25:50

样例 中的 1 是何来历,请问?

makliu 发表于 2022-7-11 13:33:27

jackz007 发表于 2022-7-11 13:25
样例 中的 1 是何来历,请问?

原列表 是

第一次拆成 那么原列表就成了

第二次拆 就拿      来拆, 拆成   ;拆后原列表就成了

   刚好是 10;

傻眼貓咪 发表于 2022-7-11 14:30:37

makliu 发表于 2022-7-11 13:33
原列表 是

第一次拆成 那么原列表就成了

不是很明白,你的 1 是无端端出现的吗?所以 1 是从哪里来?

傻眼貓咪 发表于 2022-7-11 14:37:12

makliu 发表于 2022-7-11 13:33
原列表 是

第一次拆成 那么原列表就成了

意思就是元素里面的值是可以做更改吗?只是位置不能更改对吗?
1 = 5 - 4?

makliu 发表于 2022-7-11 14:39:33

傻眼貓咪 发表于 2022-7-11 14:37
意思就是元素里面的值是可以做更改吗?只是位置不能更改对吗?
1 = 5 - 4?

嗯嗯 是的

傻眼貓咪 发表于 2022-7-11 14:43:24

makliu 发表于 2022-7-11 14:39
嗯嗯 是的

这是题目要求的吗?感觉无解(因为在逻辑上,答案无限多个啊)
, ,
, , ....

makliu 发表于 2022-7-11 15:00:14

傻眼貓咪 发表于 2022-7-11 14:43
这是题目要求的吗?感觉无解(因为在逻辑上,答案无限多个啊)
,


yyy =   
def split_list(x:list, s: int):

    i = 0
    r = 0
    newList = []
    while i < len(x):
   
      if x == 0:
            newList.append(x)
            i += 1
            continue
      
      if x == s:
            newList.append(x)
            newList = newList + [ 0 for i in range(len(x) - len(newList))]
            break
      
      if x > s:
            newList.append(10)
            newList = newList +
            break
   
      if x < s:
            r = x + r
            
            if r <= s:
                newList.append(x)
                i += 1
            
            if r > s:
               
                newList.append(10-(r-x))
                newList = newList +
                break
    return newList

r = None

r = yyy
reslut = []
while sum(r) != 10:
    n_list = split_list(r, 10)
    reslut.append(n_list)
    r = [ r-n_list for i in range(len(r))]
    if sum(r) == 10:
      reslut.append(r)
print(reslut)

makliu 发表于 2022-7-11 15:00:48

makliu 发表于 2022-7-11 15:00


我好像给整出来~

傻眼貓咪 发表于 2022-7-11 15:08:05

makliu 发表于 2022-7-11 15:00
我好像给整出来~

{:10_254:}

qq1151985918 发表于 2022-7-12 00:15:15

def get_res(data):
    if sum(data) % 10:
      return

    print(data)
    while sum(data) != 0:
      temp = * len(data)
      for i in range(len(data)):
            if sum(temp) + data >= 10:
                temp = 10 - sum(temp)
                data -= temp
                break
            else:
                temp = data
                data = 0
      print('-->', temp)
      
if __name__ == '__main__':
    get_res()

makliu 发表于 2022-7-12 14:00:15

qq1151985918 发表于 2022-7-12 00:15


厉害了。
页: [1]
查看完整版本: 老师布置的新作用,关于python列表; 求大位指导