# Min / max item at list and create new boundingbox python

**URL:** <https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217>\
**Category:** Revit\
**Tags:** python\
**Created:** [May 5, 2022, 1:10pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217 "2022-05-05T13:10:48Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 5, 2022, 1:10pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/1 "2022-05-05T13:10:48Z")

</div>

Hi,

Can someone tell me how I can get the maximum and the minimum value from a (sub)list?  
This is my input:

![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/0/f/0f7a44b12845d87e245f041162b75df202cae14e.png)

```auto
# einde code omrekenen revit feet naar huidig ingestelde document units
# Hieronder kan je dan gaan programmeren
# Gebruik boiler template

bbox = UnwrapElement(IN[0])

minpoint = []
maxpoint = []

#bbox min and maxpunt 
for b in bbox:
	b_min = []
	b_max = []
	for a in b:
		b_min.append(a.MinPoint) #Minpoint bbox
		b_max.append(a.MaxPoint) #Maxpoint bbox
	minpoint.append(b_min)	#liststructere
	maxpoint.append(b_max)	#liststructere
	

min_pointx = [] 
min_pointy = [] 
for min in minpoint:
	minx = []
	miny = []
	for m in min:
		minx.append(m.X) #X minpoint
		miny.append(m.Y) #Y minpoint
	min_pointx.append(min(minx))#liststructere
	min_pointy.append(min(miny))#liststructere

max_pointx = [] 
max_pointy = [] 
for max in maxpoint:
	maxx = []
	maxy = []
	for m in max:
		maxx.append(m.X) #X maxpoint	
		maxy.append(m.Y) #Y maxpoint	
	max_pointx.append(max(maxx))#liststructre
	max_pointy.append(max(maxy))#liststructre

OUT = max_pointx

```

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/1/1/1183a10066cbec8f639b3d1c0708c8a03f89eb1c.png)

The min and max doesn’t work:

```auto
max_pointx.append(max(maxx))#liststructre
max_pointy.append(max(maxy))#liststructre

```

---

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [May 5, 2022, 1:24pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/2 "2022-05-05T13:24:41Z")

</div>

![2022-05-05_15h24_02](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/6/4/6488ecbd419374e77693f138706a94ec0798ef69.png)  
Whats your imput?

its not working at all.

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 5, 2022, 1:25pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/3 "2022-05-05T13:25:42Z")

</div>

> [@Draxl\_Andreas](#):
>
> Whats your imput?

Boundingboxen in @L3

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 5, 2022, 1:26pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/4 "2022-05-05T13:26:41Z")

</div>

This works:

```auto

bbox = UnwrapElement(IN[0])

minpoint = []
maxpoint = []

#bbox min and maxpunt 
for b in bbox:
	b_min = []
	b_max = []
	for a in b:
		b_min.append(a.MinPoint) #Minpoint bbox
		b_max.append(a.MaxPoint) #Maxpoint bbox
	minpoint.append(b_min)	#liststructere
	maxpoint.append(b_max)	#liststructere
	

min_pointx = [] 
min_pointy = [] 
for min in minpoint:
	minx = []
	miny = []
	for m in min:
		minx.append(m.X) #X minpoint
		miny.append(m.Y) #Y mintpoint
	min_pointx.append(minx)#liststructere
	min_pointy.append(miny)#liststructere

max_pointx = [] 
max_pointy = [] 
for max in maxpoint:
	maxx = []
	maxy = []
	for m in max:
		maxx.append(m.X) #X maxpoint	
		maxy.append(m.Y) #Y maxpoint	
	max_pointx.append(maxx)#liststructre
	max_pointy.append(maxy)#liststructre

OUT = max_pointx

```

---

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [May 5, 2022, 1:28pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/5 "2022-05-05T13:28:25Z")

</div>

![2022-05-05_15h27_57](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/9/4/94bb351b15fd07315f28da93cc59bccdd6f465e7.png)  
OK

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 5, 2022, 1:32pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/6 "2022-05-05T13:32:45Z")

</div>

@Draxl_Andreas

chop your bbox list  
 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/d/6/d69fd9f187e449bfca25e57067a1f89815aa6a66.png)

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [May 5, 2022, 2:26pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/7 "2022-05-05T14:26:15Z")

</div>

> [@jw.vanasselt](#):
>
> ```auto
> max_pointx.append(max(maxx))#liststructre
> max_pointy.append(max(maxy))#liststructre
> 
> ```

What are you trying to do with this code? Specifically `max(maxx)` and `max(maxy)`? This is not a valid syntax.

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 5, 2022, 2:31pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/8 "2022-05-05T14:31:24Z")

</div>

I try to take the maximum item of that list.

> [@New list with largest value among sublists ; Python, Lists](https://forum.dynamobim.com/t/new-list-with-largest-value-among-sublists-python-lists/7228/8):
>
> the function works with nulls as well : we take each element among sublists and then find largest i’m not sure I got this part

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [May 5, 2022, 2:39pm UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/9 "2022-05-05T14:39:00Z")

</div>

You’ve defined `max` as a list though. If you’re trying to use `max()` as a function you have to define the function and use a different name for either the list or the function. Otherwise you have `list(item)` which means nothing.

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 6, 2022, 6:00am UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/10 "2022-05-06T06:00:05Z")

</div>

Thank you @Nick_Boyts

Does someone know how to create a def for maximum and minimum in a list?

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 6, 2022, 6:50am UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/11 "2022-05-06T06:50:39Z")

</div>

Found a solution 🙂

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/7/c/7c437d175d708be20ed784898bd587a72655e5c3.png)

```auto
import heapq

p = IN[0]

maxout = []
s = 0
for i in p:
	maxout.append(heapq.nlargest(1, p[s]))	
	s += 1

minout = []
s=0
for i in p:
	minout.append(heapq.nsmallest(1, p[s]))	
	s += 1

OUT = maxout, minout

```

---

<div class="post-metadata">

**Author:** ![c.poupin](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/c.poupin/32/89152_2.png) [@c.poupin](https://forum.dynamobim.com/u/c.poupin)\
**Post date:** [May 6, 2022, 7:40am UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/12 "2022-05-06T07:40:03Z")

</div>

Hello,  
an alternative  
 ![global_bbx](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/9/3/936caeec1e8749eefdd015337abb873263c874c1.gif)

```auto
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

groupbbx = IN[0]
out = []
for lstbbx in groupbbx:
    glob_minX = min(lstbbx, key = lambda x : x.MinPoint.X).MinPoint.X
    glob_maxX = max(lstbbx, key = lambda x : x.MaxPoint.X).MaxPoint.X
    glob_minY = min(lstbbx, key = lambda x : x.MinPoint.Y).MinPoint.Y
    glob_maxY = max(lstbbx, key = lambda x : x.MaxPoint.Y).MaxPoint.Y
    glob_minZ = min(lstbbx, key = lambda x : x.MinPoint.Z).MinPoint.Z
    glob_maxZ = max(lstbbx, key = lambda x : x.MaxPoint.Z).MaxPoint.Z
    minpt = Point.ByCoordinates(glob_minX, glob_minY, glob_minZ)
    maxpt = Point.ByCoordinates(glob_maxX, glob_maxY, glob_maxZ)
    out.append(BoundingBox.ByCorners(minpt, maxpt))
OUT = out

```

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 6, 2022, 7:47am UTC](https://forum.dynamobim.com/t/min-max-item-at-list-and-create-new-boundingbox-python/76217/13 "2022-05-06T07:47:18Z")

</div>

Thank you! that is my end goal of this script.  
I want to create new boxes and that is what you do! 🙂

It is time to learn more about the **lambda** 🙂
