老师布置的新作用,关于python列表; 求大位指导
求各路大侠指导指导。。。给出两个列表 ;列表的总和为 10的倍数 如
list1 =
list2 =
要求: 把这两个列表分别拆成多个列表且列表的总和为10, 不能改变元素的位置 ;
如:list1 拆成:
, ,
list2 拆成:
, ,
请用代码实现:
样例 中的 1 是何来历,请问? jackz007 发表于 2022-7-11 13:25
样例 中的 1 是何来历,请问?
原列表 是
第一次拆成 那么原列表就成了
第二次拆 就拿 来拆, 拆成 ;拆后原列表就成了
刚好是 10;
makliu 发表于 2022-7-11 13:33
原列表 是
第一次拆成 那么原列表就成了
不是很明白,你的 1 是无端端出现的吗?所以 1 是从哪里来? makliu 发表于 2022-7-11 13:33
原列表 是
第一次拆成 那么原列表就成了
意思就是元素里面的值是可以做更改吗?只是位置不能更改对吗?
1 = 5 - 4? 傻眼貓咪 发表于 2022-7-11 14:37
意思就是元素里面的值是可以做更改吗?只是位置不能更改对吗?
1 = 5 - 4?
嗯嗯 是的 makliu 发表于 2022-7-11 14:39
嗯嗯 是的
这是题目要求的吗?感觉无解(因为在逻辑上,答案无限多个啊)
, ,
, , .... 傻眼貓咪 发表于 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
我好像给整出来~ makliu 发表于 2022-7-11 15:00
我好像给整出来~
{:10_254:} 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() qq1151985918 发表于 2022-7-12 00:15
厉害了。
页:
[1]