{"id":2097,"date":"2015-04-20T12:34:28","date_gmt":"2015-04-20T10:34:28","guid":{"rendered":"https:\/\/www.modelical.com\/?p=1355"},"modified":"2022-03-21T12:08:52","modified_gmt":"2022-03-21T11:08:52","slug":"ghpython-104-lists","status":"publish","type":"post","link":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/","title":{"rendered":"Grasshopper Python 104"},"content":{"rendered":"<h2>Lists<\/h2>\n<p>In the last post we <a title=\"Grasshopper Python 103 \u2013 Conditionals and Operators\" href=\"https:\/\/www.modelical.com\/en\/ghpython-103-conditional-statements\/\">discussed applying conditional operations<\/a> to single values. But that is way too simple. We expect to process many different values when working with Grasshopper and the power of scripting increases when we deal with collections of data. The main collection type you should care about is The List.<\/p>\n<h3>Working With Lists<\/h3>\n<p>Lists can be created or processed within the scope of a Grasshopper Python\u00a0scripting component. To access an input parameter as a list we must specify so in the context menu. This will allow us to iterate through all the elements of the list instead of performing the defined operations for each input by default, as happened in the examples in 103.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/03\/ListAccess.jpg\" alt=\"\" width=\"995\" height=\"707\" class=\"alignnone size-full wp-image-3949\" srcset=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/03\/ListAccess.jpg 995w, https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/03\/ListAccess-480x341.jpg 480w, https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/03\/ListAccess-768x546.jpg 768w\" sizes=\"(max-width: 995px) 100vw, 995px\" \/><\/p>\n<p>Now we can access the list as a whole to, for instance, measure how many elements are there in the list with the Count property.<\/p>\n<pre class=\"lang:python decode:true\">a = \"There are %d elements in the list\" %(len(x))\r\n\r\n# Here we are also using a variable placeholder.<\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_02.png\" alt=\"\" width=\"1720\" height=\"599\" class=\"alignnone size-full wp-image-4076\" srcset=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_02.png 1720w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_02-480x167.png 480w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_02-768x267.png 768w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_02-1280x446.png 1280w\" sizes=\"(max-width: 1720px) 100vw, 1720px\" \/><\/p>\n<h3><strong>Declaring Lists<\/strong><\/h3>\n<p>In order to process a list we are going to need a bit more of flow control than just <a title=\"Grasshopper Python 103 \u2013 Conditionals and Operators\" href=\"https:\/\/www.modelical.com\/en\/ghpython-103-conditional-statements\/\">conditionals<\/a>\u00a0but before diving into loops let&#8217;s see how to declare and populate a list inside a Python component.<\/p>\n<p>List declaration works like other variables but you need to supply values inside square brackets and separated by commas.<\/p>\n<pre class=\"lang:python decode:true\">\r\nmyList = [1,2,4,9,16,25]\r\n# Lists are declared by providing several items within square brackets.\r\n\r\nmyEmptyList = []\r\n# An empty list\r\n\r\nmyOtherList = [\"perro\", 1, 3.5, \"dog\"]\r\n# A list containing different types<\/pre>\n<p>Operating with lists:<\/p>\n<pre class=\"lang:python decode:true\">myList = []\r\n# Declare an empty list\r\n\r\n# Now fill it with the append() method.\r\n# Enter the Fibonacci series\r\n\r\nmyList.append(1)\r\nmyList.append(1)\r\nmyList.append(2)\r\nmyList.append(3)\r\nmyList.append(5)\r\nmyList.append(8)\r\nmyList.append(15)\r\n\r\n# This would be equivalent to\r\nmyList = [1,1,2,3,5,8,15]\r\n\r\n# Print the number of items in the list\r\nprint \"The list has %d items\" % (len(myList))\r\n\r\n# Retrieve a specific item in the list\r\nprint \"Item at position 2 is %s\" % (myList[2])\r\n\r\n# You can retrieve also negative positions\r\nprint myList[-2]\r\n\r\n# Create a trimmed version of the list with the : operator.\r\n# :X will trim the remove the x items from the end.\r\nmyTrimmedList = myList[:3]\r\nprint myTrimmedList \r\n\r\n# X: will trim the remove the x items from the start.\r\nmyTrimmedList = myList[2:]\r\nprint myTrimmedList \r\n\r\n# We can use [:] to create a full copy of the list\r\nmyCopyList = myList[:]\r\n\r\nprint \"Original and Copy Before Change\"\r\nprint myList\r\nprint myCopyList\r\n\r\n# Now change some value in myList\r\nmyList[0] = 100\r\n\r\nprint \"Original and Copy after Change\"\r\nprint myList\r\nprint myCopyList\r\n\r\n#Finally let's make a copy a reverse the list\r\n\r\nmyReversedList = myList[:]\r\nmyReversedList.reverse()\r\n\r\nprint \"List reversed\"\r\nprint myReversedList\r\n<\/pre>\n<p>We interact with List mainly through methods and properties:<\/p>\n<li><strong>List.append(E)<\/strong> will add E to the list.<\/li>\n<li><strong>List.reverse()<\/strong> will invert the order of elements in the list.<\/li>\n<li><strong>List[i]<\/strong> will retrieve the element of the list with index i<\/li>\n<li><strong>Len(List)<\/strong>\u00a0will return the number of items in the list;<\/li>\n<h3>Reference Types<\/h3>\n<p>You have to be careful when dealing with lists as they behave quite different from\u00a0inmutable variables like strings and doubles. Let&#8217;s seen an example:<\/p>\n<pre class=\"lang:python decode:true\"># Declare two variables, make the second equal to the first one\r\nmyNumber1 = 8\r\nmyNumber2 = myNumber1\r\n\r\n# Change the first one\r\nmyNumber1 += 5\r\n\r\n# Print both variables\r\nprint myNumber1\r\nprint myNumber2<\/pre>\n<p>The result here is something we would expect, the second variable gets the same as the first, then we alter the former but the later stays the same.<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_03.png\" alt=\"\" width=\"1720\" height=\"599\" class=\"alignnone size-full wp-image-4077\" srcset=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_03.png 1720w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_03-480x167.png 480w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_03-768x267.png 768w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_03-1280x446.png 1280w\" sizes=\"(max-width: 1720px) 100vw, 1720px\" \/><\/p>\n<p>Now let&#8217;s do something similar with a list of strings:<\/p>\n<pre class=\"lang:c# decode:true\">#Declare a list\r\nmyList = [\"Dog\",\"Cat\",\"Bird\",\"Elephant\",\"Lion\",\"Tiger\",\"Parrot\"]\r\n\r\n# Create the a new list and assign it the contet of myList\r\nmyCopyList = myList\r\n\r\nprint \"Original and Copy Before Change\"\r\nprint myList\r\nprint myCopyList\r\n\r\n# Now change some value in myList\r\nmyList[0] = \"Whale\"\r\n\r\nprint \"Original and Copy after Change\"\r\nprint myList\r\nprint myCopyList\r\n<\/pre>\n<p>Look at the result:<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_04.png\" alt=\"\" width=\"1720\" height=\"599\" class=\"alignnone size-full wp-image-4078\" srcset=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_04.png 1720w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_04-480x167.png 480w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_04-768x267.png 768w, https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/104_Lists_04-1280x446.png 1280w\" sizes=\"(max-width: 1720px) 100vw, 1720px\" \/><\/p>\n<p>Weird right? Despite we only changed the first list, both outputs have been altered. That is because Lists, and Points, Surfaces, Meshes and everything else are Reference-Type variables, meaning that when we called\u00a0<em>myCopyList = myList;<\/em> we where not copying the contents of one list into the other but actually linking both variables to the same data, so if we modify one we&#8217;ll do so for all of its references.<\/p>\n<p>That&#8217;s why, on the previous example, we created the copy of the list not using a plain &#8220;=&#8221; statement but we added the [:] operator.<\/p>\n<h3>Challenge<\/h3>\n<p>1. Write a component that checks if a list has an odd number of items and if so, returns the element at the middle.<\/p>\n<p>2. Write your own version of the List Item component.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lists In the last post we discussed applying conditional operations to single values. But that is way too simple. We expect to process many different values when working with Grasshopper and the power of scripting increases when we deal with collections of data. The main collection type you should care about is The List. Working [&hellip;]<\/p>\n","protected":false},"author":64,"featured_media":27120,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[418,422],"class_list":["post-2097","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guidelines","tag-technology-grasshopper","tag-technology-python"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Grasshopper Python 104 - Modelical<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Grasshopper Python 104 - Modelical\" \/>\n<meta property=\"og:description\" content=\"Lists In the last post we discussed applying conditional operations to single values. But that is way too simple. We expect to process many different values when working with Grasshopper and the power of scripting increases when we deal with collections of data. The main collection type you should care about is The List. Working [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/\" \/>\n<meta property=\"og:site_name\" content=\"Modelical\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Modelical\/\" \/>\n<meta property=\"article:published_time\" content=\"2015-04-20T10:34:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-21T11:08:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.modelical.com\/wp-content\/uploads\/Posts_34_GH_2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"375\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Roberto Molinos\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@modelical\" \/>\n<meta name=\"twitter:site\" content=\"@modelical\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roberto Molinos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/\"},\"author\":{\"name\":\"Roberto Molinos\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#\\\/schema\\\/person\\\/3ad52fd99e6b5b98a59ef24c76a7c2d5\"},\"headline\":\"Grasshopper Python 104\",\"datePublished\":\"2015-04-20T10:34:28+00:00\",\"dateModified\":\"2022-03-21T11:08:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/\"},\"wordCount\":458,\"image\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2015\\\/04\\\/Posts_34_GH_2-400x250-1.jpg\",\"keywords\":[\"Tec Grasshopper\",\"Tec Python\"],\"articleSection\":[\"Guidelines\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/\",\"name\":\"Grasshopper Python 104 - Modelical\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2015\\\/04\\\/Posts_34_GH_2-400x250-1.jpg\",\"datePublished\":\"2015-04-20T10:34:28+00:00\",\"dateModified\":\"2022-03-21T11:08:52+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#\\\/schema\\\/person\\\/3ad52fd99e6b5b98a59ef24c76a7c2d5\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/ghpython-104-lists\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2015\\\/04\\\/Posts_34_GH_2-400x250-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2015\\\/04\\\/Posts_34_GH_2-400x250-1.jpg\",\"width\":400,\"height\":250},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/\",\"name\":\"Modelical\",\"description\":\"We build information\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#\\\/schema\\\/person\\\/3ad52fd99e6b5b98a59ef24c76a7c2d5\",\"name\":\"Roberto Molinos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9346c12c96cb942be9bb8b2454e296662a1baa0b4cd461ab315ae9a5185b0db6?s=96&d=initials&r=g&initials=ro\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9346c12c96cb942be9bb8b2454e296662a1baa0b4cd461ab315ae9a5185b0db6?s=96&d=initials&r=g&initials=ro\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9346c12c96cb942be9bb8b2454e296662a1baa0b4cd461ab315ae9a5185b0db6?s=96&d=initials&r=g&initials=ro\",\"caption\":\"Roberto Molinos\"},\"sameAs\":[\"https:\\\/\\\/www.modelical.com\"],\"url\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/author\\\/roberto\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Grasshopper Python 104 - Modelical","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/","og_locale":"en_US","og_type":"article","og_title":"Grasshopper Python 104 - Modelical","og_description":"Lists In the last post we discussed applying conditional operations to single values. But that is way too simple. We expect to process many different values when working with Grasshopper and the power of scripting increases when we deal with collections of data. The main collection type you should care about is The List. Working [&hellip;]","og_url":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/","og_site_name":"Modelical","article_publisher":"https:\/\/www.facebook.com\/Modelical\/","article_published_time":"2015-04-20T10:34:28+00:00","article_modified_time":"2022-03-21T11:08:52+00:00","og_image":[{"width":600,"height":375,"url":"https:\/\/www.modelical.com\/wp-content\/uploads\/Posts_34_GH_2.jpg","type":"image\/jpeg"}],"author":"Roberto Molinos","twitter_card":"summary_large_image","twitter_creator":"@modelical","twitter_site":"@modelical","twitter_misc":{"Written by":"Roberto Molinos","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/#article","isPartOf":{"@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/"},"author":{"name":"Roberto Molinos","@id":"https:\/\/www.modelical.com\/en\/#\/schema\/person\/3ad52fd99e6b5b98a59ef24c76a7c2d5"},"headline":"Grasshopper Python 104","datePublished":"2015-04-20T10:34:28+00:00","dateModified":"2022-03-21T11:08:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/"},"wordCount":458,"image":{"@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/#primaryimage"},"thumbnailUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/Posts_34_GH_2-400x250-1.jpg","keywords":["Tec Grasshopper","Tec Python"],"articleSection":["Guidelines"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/","url":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/","name":"Grasshopper Python 104 - Modelical","isPartOf":{"@id":"https:\/\/www.modelical.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/#primaryimage"},"image":{"@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/#primaryimage"},"thumbnailUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/Posts_34_GH_2-400x250-1.jpg","datePublished":"2015-04-20T10:34:28+00:00","dateModified":"2022-03-21T11:08:52+00:00","author":{"@id":"https:\/\/www.modelical.com\/en\/#\/schema\/person\/3ad52fd99e6b5b98a59ef24c76a7c2d5"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.modelical.com\/en\/ghpython-104-lists\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.modelical.com\/en\/ghpython-104-lists\/#primaryimage","url":"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/Posts_34_GH_2-400x250-1.jpg","contentUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/2015\/04\/Posts_34_GH_2-400x250-1.jpg","width":400,"height":250},{"@type":"WebSite","@id":"https:\/\/www.modelical.com\/en\/#website","url":"https:\/\/www.modelical.com\/en\/","name":"Modelical","description":"We build information","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.modelical.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.modelical.com\/en\/#\/schema\/person\/3ad52fd99e6b5b98a59ef24c76a7c2d5","name":"Roberto Molinos","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9346c12c96cb942be9bb8b2454e296662a1baa0b4cd461ab315ae9a5185b0db6?s=96&d=initials&r=g&initials=ro","url":"https:\/\/secure.gravatar.com\/avatar\/9346c12c96cb942be9bb8b2454e296662a1baa0b4cd461ab315ae9a5185b0db6?s=96&d=initials&r=g&initials=ro","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9346c12c96cb942be9bb8b2454e296662a1baa0b4cd461ab315ae9a5185b0db6?s=96&d=initials&r=g&initials=ro","caption":"Roberto Molinos"},"sameAs":["https:\/\/www.modelical.com"],"url":"https:\/\/www.modelical.com\/en\/author\/roberto\/"}]}},"_links":{"self":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/posts\/2097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/comments?post=2097"}],"version-history":[{"count":0,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/posts\/2097\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/media\/27120"}],"wp:attachment":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/media?parent=2097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/categories?post=2097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/tags?post=2097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}