{"id":2016,"date":"2015-03-18T22:15:30","date_gmt":"2015-03-18T14:15:30","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=2016"},"modified":"2015-03-18T22:15:30","modified_gmt":"2015-03-18T14:15:30","slug":"python%e7%9a%84%e4%b8%80%e4%ba%9b%e5%b0%8f%e7%9f%a5%e8%af%86%e7%82%b9_9","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/2016.html","title":{"rendered":"Python\u7684\u4e00\u4e9b\u5c0f\u77e5\u8bc6\u70b9_9"},"content":{"rendered":"<h5>1\uff0e\u7528Python\u751f\u6210\u6210\u968f\u673a\u5b57\u7b26\u4e32<\/h5>\n<h6>\u641c\u7d22\u5173\u952e\u5b57\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/search.aol.com\/aol\/search?q=python+How+to+generate+a+random+string\" target=\"_blank\">http:\/\/search.aol.com\/aol\/search?q=python+How+to+generate+a+random+string<\/a><\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">import random, string\n\n''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(N))\n''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(N)) # more secure\n\nimport string\nimport random\ndef id_generator(size=6, chars=string.ascii_uppercase + string.digits):\n    return ''.join(random.choice(chars) for _ in range(size))\n\nid_generator()\nid_generator(3, \"6793YUIO\")\n\nimport uuid; str(uuid.uuid4().get_hex().upper()[0:6])<\/pre>\n<p>\u7528\u7684\u662frandom.choice()\u65b9\u6cd5<\/p>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/2257441\/random-string-generation-with-upper-case-letters-and-digits-in-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/2257441\/random-string-generation-with-upper-case-letters-and-digits-in-python<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/18319101\/whats-the-best-way-to-generate-random-strings-of-a-specific-length-in-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/18319101\/whats-the-best-way-to-generate-random-strings-of-a-specific-length-in-python<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/306400\/how-do-i-randomly-select-an-item-from-a-list-using-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/306400\/how-do-i-randomly-select-an-item-from-a-list-using-python<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/41107\/how-to-generate-a-random-alpha-numeric-string\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/41107\/how-to-generate-a-random-alpha-numeric-string<\/a> #Java\u7248<\/li>\n<\/ul>\n<h5>2\uff0e\u5982\u4f55\u7528Python\u5747\u5206\u4e00\u4e2a\u5217\u8868\uff1f<\/h5>\n<p><a href=\"http:\/\/ixyzero.com\/blog\/wp-content\/uploads\/2015\/03\/chunks_methods.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2017 size-full\" src=\"http:\/\/ixyzero.com\/blog\/wp-content\/uploads\/2015\/03\/chunks_methods.png\" alt=\"chunks_methods\" width=\"469\" height=\"946\" \/><\/a><\/p>\n<pre class=\"lang:default decode:true\">def chunks(l, n):\n    \"\"\" Yield successive n-sized chunks from l. \"\"\"\n    for i in xrange(0, len(l), n):\n        yield l[i:i+n]\nimport pprint\npprint.pprint(list(chunks(range(10, 75), 10)))\n#\ndef chunks2(l, n):\n    n = max(1, n)\n    return [l[i:i + n] for i in range(0, len(l), n)]\nchunks2(range(10, 75), 10)\n#\ndef chunks3(input, size):\n    return map(None, *([iter(input)] * size))\nchunks3(range(10, 75), 10)\n#\nl = range(10, 75)\nchunks4 = lambda l, n: [l[x: x+n] for x in xrange(0, len(l), n)]\nchunks4(l, 10)<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/312443\/how-do-you-split-a-list-into-evenly-sized-chunks-in-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/312443\/how-do-you-split-a-list-into-evenly-sized-chunks-in-python<\/a> #Nice<\/li>\n<\/ul>\n<h5>\n3\uff0e\u5982\u4f55\u7528Python\u521d\u59cb\u5316\u6307\u5b9a\u957f\u5ea6\u7684\u5217\u8868\uff1f<\/h5>\n<pre class=\"lang:default decode:true\">list_1 = [0] * 10 #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\nlist_2 = [{} for _ in range(10)]<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/983699\/initialise-a-list-to-a-specific-length-in-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/983699\/initialise-a-list-to-a-specific-length-in-python<\/a><\/li>\n<\/ul>\n<h5>\n4\uff0e\u7528Python\u751f\u6210\u6307\u5b9a\u8303\u56f4\u5185\u56fa\u5b9a\u957f\u5ea6\u7684\u5217\u8868<\/h5>\n<h6>\u641c\u7d22\u5173\u952e\u5b57\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/search.aol.com\/aol\/search?q=python+get+random+list\" target=\"_blank\">http:\/\/search.aol.com\/aol\/search?q=python+get+random+list<\/a><\/li>\n<\/ul>\n<h6>\u63a8\u8350\u65b9\u6cd5\uff1a<\/h6>\n<p>random.sample<br \/>\n\u4e0d\u63a8\u8350\u4f7f\u7528random.randint<\/p>\n<pre class=\"lang:default decode:true\">import random\nrandom.sample(range(30), 4)\n\nimport random\n[random.randrange(1, 10) for _ in range(0, 4)]\n\nimport timeit\nimport numpy.random as nprnd\nt1 = timeit.Timer('[random.randint(0,1000) for r in xrange(10000)]','import random')    # v1\nt2 = timeit.Timer('random.sample(range(10000), 10000)','import random')     # v2(change v2 so that it picks numbers in (0,10000) and thus runs...)\nt3 = timeit.Timer('nprnd.randint(1000, size=10000)','import numpy.random as nprnd')     # v3\nprint t1.timeit(1000)\/1000\nprint t2.timeit(1000)\/1000\nprint t3.timeit(1000)\/1000<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/4172131\/create-random-list-of-integers-in-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/4172131\/create-random-list-of-integers-in-python<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/3559337\/how-in-python-to-generate-a-random-list-of-fixed-length-of-values-from-given-ran\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/3559337\/how-in-python-to-generate-a-random-list-of-fixed-length-of-values-from-given-ran<\/a><\/li>\n<\/ul>\n<h5>5\uff0ePython\u4e2d\u7684\u5b57\u7b26\u4e32\u67e5\u627e\u6548\u7387\u548c\u6b63\u5219\u67e5\u627e\u7684\u5bf9\u6bd4<\/h5>\n<h6>\u641c\u7d22\u5173\u952e\u5b57\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/search.aol.com\/aol\/search?q=python+re.search+vs+str.find\" target=\"_blank\">http:\/\/search.aol.com\/aol\/search?q=python+re.search+vs+str.find<\/a><\/li>\n<\/ul>\n<h6>\u53c2\u8003\u7ed3\u8bba\uff1a<\/h6>\n<p>\u4f7f\u7528in\u5173\u952e\u5b57\u662f\u6700\u5feb\u7684\uff1b\u6b63\u5219\u67e5\u627e\u662f\u6700\u6162\u7684\u3002<\/p>\n<pre class=\"lang:default decode:true\">from timeit import timeit\nimport re\n\ndef find(string, text):\n    if string.find(text) &gt; -1:\n        pass\n\ndef re_find(string, text):\n    if re.match(text, string):\n        pass\n\ndef best_find(string, text):\n    if text in string:\n       pass\n\nprint timeit(\"find(string, text)\", \"from __main__ import find; string='lookforme'; text='look'\")\nprint timeit(\"re_find(string, text)\", \"from __main__ import re_find; string='lookforme'; text='look'\")\nprint timeit(\"best_find(string, text)\", \"from __main__ import best_find; string='lookforme'; text='look'\")<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/4901523\/whats-a-faster-operation-re-match-search-or-str-find\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/4901523\/whats-a-faster-operation-re-match-search-or-str-find<\/a><\/li>\n<li><a href=\"https:\/\/docs.python.org\/2\/howto\/regex.html\" target=\"_blank\">https:\/\/docs.python.org\/2\/howto\/regex.html<\/a><\/li>\n<li><a href=\"https:\/\/docs.python.org\/2\/library\/re.html\" target=\"_blank\">https:\/\/docs.python.org\/2\/library\/re.html<\/a><\/li>\n<\/ul>\n<h5>6\uff0e\u5728Python\u4e2d\u4f7f\u7528\u6b63\u5219\u662f\u5426\u9700\u8981\u5148compile\u5462\uff1f<\/h5>\n<h6>\u53c2\u8003\u7ed3\u8bba\uff1a<\/h6>\n<p>\u5982\u679c\u9700\u8981\u8fdb\u884c\u5927\u91cf\/\u591a\u6b21\u641c\u7d22\u7684\u8bdd\uff0c\u5148compile\u7684\u6548\u7387\u8981\u9ad8\u5f97\u591a\uff01<\/p>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/452104\/is-it-worth-using-pythons-re-compile\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/452104\/is-it-worth-using-pythons-re-compile<\/a> #Nice<\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/14756790\/why-are-uncompiled-repeatedly-used-regexes-so-much-slower-in-python-3\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/14756790\/why-are-uncompiled-repeatedly-used-regexes-so-much-slower-in-python-3<\/a> #Good<\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/9684899\/doing-multiple-successive-regex-replacements-in-python-inefficient\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/9684899\/doing-multiple-successive-regex-replacements-in-python-inefficient<\/a><\/li>\n<\/ul>\n<h5>7\uff0ePython\u4e2dsearch\u548cmatch\u7684\u533a\u522b<\/h5>\n<h6>\u53c2\u8003\u7ed3\u8bba\uff1a<\/h6>\n<blockquote>\n<p style=\"padding-left: 30px;\">Python offers two different primitive operations based on regular expressions: match checks for a match only at the beginning of the string, while search checks for a match anywhere in the string (this is what Perl does by default).<br \/>\nNote that match may differ from search even when using a regular expression beginning with &#8216;^&#8217;: &#8216;^&#8217; matches only at the start of the string, or in MULTILINE mode also immediately following a newline. The \u201cmatch\u201d operation succeeds only if the pattern matches at the start of the string regardless of mode, or at the starting position given by the optional pos argument regardless of whether a newline precedes it.<\/p>\n<\/blockquote>\n<ul>\n<li>search =&gt; find something <span style=\"color: #ff0000;\"><strong>anywhere<\/strong><\/span> in the string and return a match object.<\/li>\n<li>match =&gt; find something <span style=\"color: #ff0000;\"><strong>at the beginning of the string<\/strong><\/span> and return a match object.<\/li>\n<\/ul>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/180986\/what-is-the-difference-between-pythons-re-search-and-re-match\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/180986\/what-is-the-difference-between-pythons-re-search-and-re-match<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>1\uff0e\u7528Python\u751f\u6210\u6210\u968f\u673a\u5b57\u7b26\u4e32 \u641c\u7d22\u5173\u952e\u5b57\uff1a http:\/\/search.aol.com\/aol\/sear [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,7],"tags":[8,19],"class_list":["post-2016","post","type-post","status-publish","format-standard","hentry","category-knowledgebase-2","category-programing","tag-python","tag-tips"],"views":2744,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=2016"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2016\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=2016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=2016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=2016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}