![](/img/trans.png)
[英]Check if a Python list has X number of consecutive values equal to Y
[英]Appending consecutive equal values to a list in python
因此,我正在处理一个python脚本,该脚本将接收一个整数(S)列表,并基于S中的整数输出一个列表列表,并且每个列表的总和必须为相同的值。
我在附加相同的值时遇到问题。 当我希望它创建另一个条目时,Python似乎将它们聚合为相同的值。
我尝试使用.extend获得相同的结果。 另外,我阅读并看到了有关将常量乘以创建多个值的文章。 这里的问题是我不知道要添加元素多少次。 有一个简单的解决方案吗? 对不起,如果以前已经回答过,但是我找不到。
import itertools
def arrangeBoxes(stacks, arr):
perms = itertools.permutations(arr)
total = sum(arr)
stackSize = total / stacks
if (not(stackSize.is_integer())):
return [False, []]
for i in perms:
tempSum = 0
tempArr = []
stackArr = []
built = False
for j in i:
tempArr.append(j)
if (sum(tempArr) == stackSize):
stackArr.append(tempArr)
tempArr = []
if (j == i[len(i) - 1]):
built = True
break
else:
if (j == i[len(i) - 1]):
break
if (built):
return [True, stackArr]
return [False, []]
# Doesn't Work.
# Output: [True, [[3]]]
# Should be: [True, [[3], [3], [3]]
print(str(arrangeBoxes(3, [3, 3, 3])))
# Works fine.
# Output: [True, [[2, 1], [2, 1], [3]]]
print(str(arrangeBoxes(3, [2, 1, 2, 1, 3])))
你明确地打破并返回何时
j == i[len(i) - 1])
在( (3,3,3)
)的第一次迭代中, j
很显然是3,而i
任何单元格显然都是3-这将立即为True并中断,然后返回。
如果要检查是否位于最后一个索引中 ,请遍历索引 ,而不要遍历元素:
for perm in perms:
...
for j in range(len(perm)):
...
if j == len(perm) - 1:
return [True, stackArr]
无需else
或break
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.