python-3.x - 如何在某些条件下从某些列表中获取最大值?
问题描述
list1 = [140,232,857,273,405,374,1234,394,1803]
u = 0
b = 4
for i in list1[u:b]
u+= 4
u+= 4
print(max(i))
现在我想从该列表中获取最大值,但只能从 list1[0:4] 中获取并继续。现在我想在这段代码上做类似的事情:
for im in images:
ww, hh = zip(*(im.size for im in images))
www, hhh = im.size
max_h = max(hh)
y_test = []
try:
new_im.paste(im, (x_offset,y))
with open('x.txt', 'a') as file:
file.write(str(x_offset) + "\n")
with open('y.txt', 'a') as file:
file.write(str(y) + "\n")
with open('w.txt', 'a') as file:
file.write(str(www) + "\n")
with open('h.txt', 'a') as file:
file.write(str(hhh) + "\n")
x_offset += im.size[0]
if x_offset > int(q_w) - www:
print(max(hh))
x_offset =0
y += max(hhh)
if hh < y:
y += hhh
if hh > y:
y -= hhh
else:
y += max_h
except:
continue
如果 x_offset > int(q_w) - www 那么我想取 hhh 的最大值直到这里。我怎样才能做到这一点?
解决方案
请理解,我们适用max( ... )
于一个序列,而不是单个标量值,例如,max([6, 7, 8])
而不是max(4)
.
第一个例子不清楚。我认为您的意图是k=4
在列表上运行一个大小窗口并显示局部最大值。一种更自然的表达方式u
是:
for i in range(len(list1) - k):
window = list1[i : i + k]
print(i, max(window))
一个非常相似的方法将适用于您的第二个示例。for
以这种方式表达循环,并切掉元素k
:
for i, im in enumerate(images):
if i + k < len(images):
window = images[i : i + k]
...
在那之后你自己做一些有用的事情window
,因为你的问题不清楚你想要什么的细节。
你在循环中写了这一行:
ww, hh = zip(*(im.size for im in images))
它每次都计算相同的东西,所以为了让事情更快,它属于循环之外。此外,它会丢弃im
迭代变量,因此对于循环的其余部分是一个im
常量值,它始终是. 这看起来很糟糕,它可能不是你想要的。images
同样,这是一个可以在循环外提升的常量:
max_h = max(hh)
此外,您except: continue
是正确的,但except: pass
将是更常见的成语,表达了简单地忽略异常的意图。您发布的代码中没有任何语句跟随它,因此两者的效果相同。理解这continue
将跳到循环顶部,如果有的话,跳过下面的语句。
推荐阅读
- javascript - 每个按钮有 2 个数字的虚拟密码键盘如何工作?
- javascript - 替代 normalize() 对数组进行排序
- python - Python自定义解析器未检测到参数
- python - 使用正则表达式将数字添加到字符串中的列表
- javascript - 如果在 ajax 调用之前检查,则获取复选框值
- sql-server - SQL Server 存储过程 INSERT INTO
- spring - Spring Boot默认资源位置找不到静态文件
- python - 使用 scipy.io 在 python 中读取 Matlab 数据
- python - 修改一个pytorch张量然后获取梯度让梯度不起作用
- java - 如何阻止 Intellij Idea 降低计算机速度?