{"id":10693,"date":"2022-09-24T15:53:53","date_gmt":"2022-09-24T10:23:53","guid":{"rendered":"http:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/"},"modified":"2022-09-24T15:53:53","modified_gmt":"2022-09-24T10:23:53","slug":"solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/","title":{"rendered":"[Solved] Fastest possible generation of permutation with defined element values in Python"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-54198036\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"54198036\" data-parentid=\"54197962\" data-score=\"5\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You just copied the code from the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.python.org\/3\/library\/itertools.html#itertools.permutations\"><code>itertools.permutations()<\/code><\/a> documentation. That explicitly states that it is <em>roughly<\/em> equivalent, because it is only there to help you understand what <code>itertools.permutations()<\/code> does. The code is <em>not intended to be used in production settings<\/em>.<\/p>\n<p>Use <code>itertools.permutations()<\/code> itself. The <code>itertools<\/code> module is designed for maximum efficiency already. The module is coded in C, and will always beat a pure Python implementation, hands down.<\/p>\n<p>You are also wasting iterations on appending values to a list; each <code>.append()<\/code> expression requires an attribute lookup and a method call. You can build <code>plist<\/code> in a single expression by calling <code>list()<\/code>:<\/p>\n<pre><code>plist = list(permutations('123456789ABCDEF', 8))\n<\/code><\/pre>\n<p>However, you <em>really don&#8217;t want to execute that call<\/em>, because that&#8217;ll take a lot of time to produce all possible permutations as separate objects, and allocating the memory for that takes time and will slow down your machine.<\/p>\n<p>The number of <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Permutation#k-permutations_of_n\"><em>k<\/em>-permutations of <em>n<\/em> is calculated with k! \/ (n &#8211; k)!)<\/a>, with n=15 and k=8, that&#8217;s 15! \/ (15 &#8211; 8)!, so <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.wolframalpha.com\/input\/?i=number+of+8-permutations+of+15+objects\">just over a quarter billion results, 259_459_200<\/a>. On a 64-bit OS that&#8217;ll require about ~30GB of memory (2GB for the list object, 27G for the tuples, mere bytes for the 15 1-digit strings as they are shared).<\/p>\n<p>If you really want to process those permutations, I&#8217;d just loop over the generator and use each result directly. You&#8217;ll still have to iterate a quarter-billion times, so it&#8217;ll still take a lot of time, but at least you don&#8217;t then try to hold it all in memory at once.<\/p>\n<p>Alternatively, always look for other ways to solve your problem. Generating all possible permutations will produce a very large number of possibilities. Your previous question received an answer that pointed out that for <em>than specific problem<\/em>, searching through 200kb of data for likely candidates was more efficient than to do 40k searches for every possible 8-permutation of 8. With 259 million permutations there is an even larger chance that processing your problem from another direction might keep your problem space manageable.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">7<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Fastest possible generation of permutation with defined element values in Python <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You just copied the code from the itertools.permutations() documentation. That explicitly states that it is roughly equivalent, because it is only there to help you understand what itertools.permutations() does. The code is not intended to be used in production settings. Use itertools.permutations() itself. The itertools module is designed for maximum efficiency already. The module &#8230; <a title=\"[Solved] Fastest possible generation of permutation with defined element values in Python\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\" aria-label=\"More on [Solved] Fastest possible generation of permutation with defined element values in Python\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[468,349],"class_list":["post-10693","post","type-post","status-publish","format-standard","hentry","category-solved","tag-permutation","tag-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Fastest possible generation of permutation with defined element values in Python - JassWeb<\/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:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Fastest possible generation of permutation with defined element values in Python - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You just copied the code from the itertools.permutations() documentation. That explicitly states that it is roughly equivalent, because it is only there to help you understand what itertools.permutations() does. The code is not intended to be used in production settings. Use itertools.permutations() itself. The itertools module is designed for maximum efficiency already. The module ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-24T10:23:53+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Fastest possible generation of permutation with defined element values in Python\",\"datePublished\":\"2022-09-24T10:23:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\"},\"wordCount\":350,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"permutation\",\"python\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\",\"name\":\"[Solved] Fastest possible generation of permutation with defined element values in Python - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-24T10:23:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Fastest possible generation of permutation with defined element values in Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Fastest possible generation of permutation with defined element values in Python - JassWeb","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:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Fastest possible generation of permutation with defined element values in Python - JassWeb","og_description":"[ad_1] You just copied the code from the itertools.permutations() documentation. That explicitly states that it is roughly equivalent, because it is only there to help you understand what itertools.permutations() does. The code is not intended to be used in production settings. Use itertools.permutations() itself. The itertools module is designed for maximum efficiency already. The module ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/","og_site_name":"JassWeb","article_published_time":"2022-09-24T10:23:53+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Fastest possible generation of permutation with defined element values in Python","datePublished":"2022-09-24T10:23:53+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/"},"wordCount":350,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["permutation","python"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/","url":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/","name":"[Solved] Fastest possible generation of permutation with defined element values in Python - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-24T10:23:53+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-fastest-possible-generation-of-permutation-with-defined-element-values-in-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Fastest possible generation of permutation with defined element values in Python"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/10693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=10693"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/10693\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=10693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=10693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=10693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}