{"id":1609,"date":"2025-09-29T15:50:13","date_gmt":"2025-09-29T08:50:13","guid":{"rendered":"https:\/\/kienthucmo.com\/?p=1609"},"modified":"2025-10-03T20:04:24","modified_gmt":"2025-10-03T13:04:24","slug":"them-phan-tu-vao-set-trong-python","status":"publish","type":"post","link":"https:\/\/kienthucmo.com\/vi\/them-phan-tu-vao-set-trong-python\/","title":{"rendered":"Th\u00eam ph\u1ea7n t\u1eed v\u00e0o Set trong Python"},"content":{"rendered":"\n<p>Set l\u00e0 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u r\u1ea5t h\u1eefu \u00edch khi m\u00ecnh c\u1ea7n l\u01b0u t\u1eadp h\u1ee3p c\u00e1c ph\u1ea7n t\u1eed <strong>kh\u00f4ng tr\u00f9ng<\/strong> v\u00e0 kh\u00f4ng quan t\u00e2m \u0111\u1ebfn th\u1ee9 t\u1ef1. Khi x\u1eed l\u00fd d\u1eef li\u1ec7u th\u1ef1c t\u1ebf \u2014 lo\u1ea1i b\u1ecf ph\u1ea7n t\u1eed tr\u00f9ng, ki\u1ec3m tra membership nhanh, hay thao t\u00e1c c\u00e1c ph\u00e9p to\u00e1n t\u1eadp h\u1ee3p \u2014 <code>set<\/code> th\u01b0\u1eddng l\u00e0 l\u1ef1a ch\u1ecdn ph\u00f9 h\u1ee3p.<\/p>\n\n\n\n<p>B\u00e0i vi\u1ebft n\u00e0y s\u1ebd \u0111i qua t\u1ea5t c\u1ea3 c\u00e1c c\u00e1ch <strong>th\u00eam ph\u1ea7n t\u1eed v\u00e0o set trong Python<\/strong>: t\u1eeb ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n <code>add()<\/code> cho \u0111\u1ebfn <code>update()<\/code>, ph\u00e9p to\u00e1n h\u1ee3p (union), to\u00e1n t\u1eed g\u00e1n m\u1edf r\u1ed9ng (<code>|=<\/code>), thao t\u00e1c v\u1edbi <code>frozenset<\/code> (immutable), c\u00e1c l\u01b0u \u00fd v\u1ec1 ki\u1ec3u d\u1eef li\u1ec7u (hashable vs unhashable), v\u00e0 nh\u1eefng best-practice &amp; hi\u1ec7u n\u0103ng c\u1ea7n bi\u1ebft<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. T\u1ed5ng quan ng\u1eafn (v\u00e0i \u0111i\u1ec3m n\u1ec1n t\u1ea3ng)<\/h2>\n\n\n\n<p>Tr\u01b0\u1edbc khi v\u00e0o c\u00e1ch th\u00eam ph\u1ea7n t\u1eed, m\u00ecnh t\u00f3m t\u1eaft v\u00e0i \u0111\u1eb7c \u0111i\u1ec3m quan tr\u1ecdng c\u1ee7a <code>set<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>set<\/code> l\u00e0 m\u1ed9t <strong>unordered collection<\/strong> v\u00e0 <strong>kh\u00f4ng cho ph\u00e9p ph\u1ea7n t\u1eed tr\u00f9ng<\/strong> \u2014 ngh\u0129a l\u00e0 n\u1ebfu b\u1ea1n th\u00eam m\u1ed9t ph\u1ea7n t\u1eed \u0111\u00e3 t\u1ed3n t\u1ea1i, <code>set<\/code> s\u1ebd b\u1ecf qua (kh\u00f4ng l\u1ed7i, kh\u00f4ng duplicate). <a href=\"https:\/\/docs.python.org\/3\/tutorial\/datastructures.html?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Python documentation<\/a><\/li>\n\n\n\n<li>Ph\u1ea7n t\u1eed trong <code>set<\/code> <strong>ph\u1ea3i l\u00e0 hashable<\/strong> (c\u00e1c ki\u1ec3u immutable nh\u01b0 <code>int<\/code>, <code>str<\/code>, <code>tuple<\/code> n\u1ebfu c\u00e1c ph\u1ea7n t\u1eed b\u00ean trong c\u0169ng hashable). N\u1ebfu b\u1ea1n c\u1ed1 g\u1eafng th\u00eam m\u1ed9t <code>list<\/code> (mutable, unhashable) s\u1ebd nh\u1eadn <code>TypeError<\/code>. <a href=\"https:\/\/docs.python.org\/3\/reference\/datamodel.html?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Python documentation<\/a><\/li>\n<\/ul>\n\n\n\n<p>Hai \u0111i\u1ec3m tr\u00ean s\u1ebd l\u1eb7p l\u1ea1i trong c\u00e1c v\u00ed d\u1ee5 b\u00ean d\u01b0\u1edbi v\u00ec ch\u00fang quy\u1ebft \u0111\u1ecbnh c\u00e1ch th\u00eam ph\u1ea7n t\u1eed s\u1ebd ho\u1ea1t \u0111\u1ed9ng th\u1ebf n\u00e0o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Th\u00eam m\u1ed9t ph\u1ea7n t\u1eed: <code>set.add(elem)<\/code><\/h2>\n\n\n\n<p>\u0110\u00e2y l\u00e0 c\u00e1ch ph\u1ed5 bi\u1ebfn nh\u1ea5t khi m\u00ecnh mu\u1ed1n th\u00eam m\u1ed9t ph\u1ea7n t\u1eed \u0111\u01a1n l\u1ebb.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Add one element to a set\nfruits = {\"apple\", \"banana\"}\nfruits.add(\"orange\")  # Add 'orange' to the set\nprint(fruits)  # e.g. {'banana', 'apple', 'orange'}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># Add one element to a set<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">fruits <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">apple<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">banana<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">fruits<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">orange<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Add &#39;orange&#39; to the set<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">fruits<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># e.g. {&#39;banana&#39;, &#39;apple&#39;, &#39;orange&#39;}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><em>Ghi ch\u00fa:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>add()<\/code> <strong>thay \u0111\u1ed5i set t\u1ea1i ch\u1ed7<\/strong> (in-place) v\u00e0 <strong>tr\u1ea3 v\u1ec1 <code>None<\/code><\/strong> \u2014 gi\u1ed1ng c\u00e1c ph\u01b0\u01a1ng th\u1ee9c thay \u0111\u1ed5i b\u1ed9 s\u01b0u t\u1eadp kh\u00e1c trong Python. <a href=\"https:\/\/www.codecademy.com\/resources\/docs\/python\/sets\/add?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Codecademy+1<\/a><\/li>\n\n\n\n<li>N\u1ebfu <code>elem<\/code> \u0111\u00e3 t\u1ed3n t\u1ea1i, <code>add()<\/code> kh\u00f4ng g\u00e2y l\u1ed7i v\u00e0 set gi\u1eef nguy\u00ean (kh\u00f4ng t\u1ea1o b\u1ea3n sao).<\/li>\n\n\n\n<li>N\u1ebfu <code>elem<\/code> kh\u00f4ng hashable (v\u00ed d\u1ee5 <code>list<\/code>), b\u1ea1n s\u1ebd th\u1ea5y <code>TypeError<\/code>:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>s = set()\ns.add(&#91;1, 2, 3&#93;)  # TypeError: unhashable type: 'list'\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">s <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">set<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">s<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">&#93;)<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># TypeError: unhashable type: &#39;list&#39;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u0110\u1ec3 th\u00eam m\u1ed9t <code>list<\/code> nh\u01b0 m\u1ed9t ph\u1ea7n t\u1eed, b\u1ea1n ph\u1ea3i chuy\u1ec3n n\u00f3 th\u00e0nh <code>tuple<\/code> (n\u1ebfu \u00fd ngh\u0129a d\u1eef li\u1ec7u cho ph\u00e9p): <code>s.add(tuple([1,2,3]))<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Th\u00eam nhi\u1ec1u ph\u1ea7n t\u1eed: <code>set.update(iterable, ...)<\/code><\/h2>\n\n\n\n<p>Khi m\u00ecnh c\u00f3 m\u1ed9t iterable (list, tuple, set, string, dict, generator, &#8230;) mu\u1ed1n th\u00eam nhi\u1ec1u ph\u1ea7n t\u1eed c\u00f9ng l\u00fac, <code>update()<\/code> l\u00e0 l\u1ef1a ch\u1ecdn \u0111\u00fang.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Update set from different iterables\nnumbers = {1, 2}\nnumbers.update(&#91;3, 4&#93;)        # add from list\nnumbers.update((5, 6))        # add from tuple\nnumbers.update(\"78\")          # add chars '7' and '8'\nnumbers.update({9: 'a'})      # adding dict adds keys (9)\nprint(numbers)  # {1,2,3,4,5,6,'7','8',9}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># Update set from different iterables<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">numbers <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">numbers<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">update<\/span><span style=\"color: #ECEFF4\">(&#91;<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4<\/span><span style=\"color: #ECEFF4\">&#93;)<\/span><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #616E88\"># add from list<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">numbers<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">update<\/span><span style=\"color: #ECEFF4\">((<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">6<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #616E88\"># add from tuple<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">numbers<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">update<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">78<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">          <\/span><span style=\"color: #616E88\"># add chars &#39;7&#39; and &#39;8&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">numbers<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">update<\/span><span style=\"color: #ECEFF4\">({<\/span><span style=\"color: #B48EAD\">9<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">a<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">})<\/span><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #616E88\"># adding dict adds keys (9)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">numbers<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># {1,2,3,4,5,6,&#39;7&#39;,&#39;8&#39;,9}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><em>Ghi ch\u00fa:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>update()<\/code> <strong>th\u00eam t\u1ea5t c\u1ea3 c\u00e1c ph\u1ea7n t\u1eed t\u1eeb iterable<\/strong> v\u00e0o set (kh\u00f4ng th\u00eam iterable nh\u01b0 m\u1ed9t ph\u1ea7n t\u1eed duy nh\u1ea5t)<\/li>\n\n\n\n<li><code>update()<\/code> <strong>thay \u0111\u1ed5i set t\u1ea1i ch\u1ed7<\/strong> v\u00e0 tr\u1ea3 v\u1ec1 <code>None<\/code>.<\/li>\n\n\n\n<li>V\u00ec <code>update()<\/code> l\u1ea5y t\u1eebng ph\u1ea7n t\u1eed trong iterable n\u00ean khi truy\u1ec1n <code>dict<\/code> th\u00ec <strong>c\u00e1c key<\/strong> \u0111\u01b0\u1ee3c th\u00eam ch\u1ee9 kh\u00f4ng ph\u1ea3i key-value pair.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. T\u1ea1o set m\u1edbi b\u1eb1ng <code>union()<\/code> ho\u1eb7c to\u00e1n t\u1eed <code>|<\/code> (non-mutating)<\/h2>\n\n\n\n<p>N\u1ebfu b\u1ea1n mu\u1ed1n <strong>l\u1ea5y set c\u0169 gi\u1eef nguy\u00ean<\/strong> v\u00e0 nh\u1eadn <strong>set m\u1edbi<\/strong> c\u00f3 th\u00eam ph\u1ea7n t\u1eed, d\u00f9ng <code>union()<\/code> ho\u1eb7c to\u00e1n t\u1eed <code>|<\/code>.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>a = {1, 2, 3}\nb = {3, 4}\nc = a.union(b)    # returns a new set; a unchanged\n# alternatively:\nd = a | {5}\nprint(a, c, d)    # a: {1,2,3}  c: {1,2,3,4}  d: {1,2,3,5}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">a <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">b <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">c <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> a<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">union<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">b<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># returns a new set; a unchanged<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># alternatively:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">d <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> a <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">a<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> c<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> d<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># a: {1,2,3}  c: {1,2,3,4}  d: {1,2,3,5}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><em>Ghi ch\u00fa:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>union()<\/code> <strong>kh\u00f4ng<\/strong> s\u1eeda set ban \u0111\u1ea7u \u2014 n\u00f3 tr\u1ea3 v\u1ec1 t\u1eadp h\u1ee3p m\u1edbi; ng\u01b0\u1ee3c l\u1ea1i <code>update()<\/code> s\u1eeda set t\u1ea1i ch\u1ed7. \u0110\u00e2y l\u00e0 kh\u00e1c bi\u1ec7t quan tr\u1ecdng khi b\u1ea1n mu\u1ed1n gi\u1eef tham chi\u1ebfu c\u0169.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. To\u00e1n t\u1eed g\u00e1n m\u1edf r\u1ed9ng <code>|=<\/code> (mutating union)<\/h2>\n\n\n\n<p>N\u1ebfu b\u1ea1n mu\u1ed1n h\u1ee3p (<code>union<\/code>) nh\u01b0ng c\u1eadp nh\u1eadt tr\u1ef1c ti\u1ebfp v\u00e0o set hi\u1ec7n t\u1ea1i, d\u00f9ng <code>|=<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>a = {1, 2}\na |= {3, 4}  # same as a.update({3,4})\nprint(a)  # {1,2,3,4}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">a <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">a <\/span><span style=\"color: #81A1C1\">|=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4<\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># same as a.update({3,4})<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">a<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># {1,2,3,4}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><em>Ghi ch\u00fa:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>a |= b<\/code> t\u01b0\u01a1ng \u0111\u01b0\u01a1ng v\u1edbi <code>a.update(b)<\/code> \u2014 <strong>thay \u0111\u1ed5i \u0111\u1ed1i t\u01b0\u1ee3ng a ngay l\u1eadp t\u1ee9c<\/strong>. N\u1ebfu c\u00f3 bi\u1ebfn <code>c = a<\/code> tr\u01b0\u1edbc khi <code>|=<\/code> th\u00ec <code>c<\/code> c\u0169ng th\u1ea5y thay \u0111\u1ed5i \u2014 v\u00ec \u0111\u00f3 l\u00e0 c\u00f9ng 1 \u0111\u1ed1i t\u01b0\u1ee3ng. \u0110i\u1ec1u n\u00e0y kh\u00e1c v\u1edbi <code>a = a | b<\/code> (d\u00f2ng sau s\u1ebd t\u1ea1o set m\u1edbi v\u00e0 g\u00e1n l\u1ea1i).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6. Nh\u1eefng t\u00ecnh hu\u1ed1ng th\u01b0\u1eddng g\u1eb7p \/ m\u1eb9o nh\u1ecf khi th\u00eam v\u00e0o set<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Th\u00eam t\u1eeb string<\/strong> \u2192 <code>update(\"abc\")<\/code> s\u1ebd th\u00eam <code>'a'<\/code>, <code>'b'<\/code>, <code>'c'<\/code> (t\u1eebng k\u00fd t\u1ef1). N\u1ebfu b\u1ea1n mu\u1ed1n th\u00eam c\u1ea3 m\u1ed9t chu\u1ed7i nh\u01b0 m\u1ed9t ph\u1ea7n t\u1eed, d\u00f9ng <code>add(\"abc\")<\/code>.<\/li>\n\n\n\n<li><strong>Th\u00eam keys c\u1ee7a dict<\/strong> \u2192 <code>update({'k': v})<\/code> th\u00eam <code>'k'<\/code>. N\u1ebfu b\u1ea1n mu\u1ed1n th\u00eam key-value, b\u1ea1n kh\u00f4ng th\u1ec3 \u2014 set ch\u1ec9 l\u01b0u gi\u00e1 tr\u1ecb \u0111\u01a1n.<\/li>\n\n\n\n<li><strong>Th\u00eam nhi\u1ec1u iterable c\u00f9ng l\u00fac<\/strong> \u2192 <code>s.update(list1, tuple1, set2)<\/code> \u2014 <code>update<\/code> c\u00f3 th\u1ec3 nh\u1eadn nhi\u1ec1u iterables.<\/li>\n\n\n\n<li><strong>Tr\u00e1nh th\u00eam unhashable<\/strong> \u2192 n\u1ebfu c\u1ea7n l\u01b0u c\u1ea5u tr\u00fac mutable (v\u00ed d\u1ee5 list) theo d\u1ea1ng &#8220;m\u1ed9t ph\u1ea7n t\u1eed&#8221;, h\u00e3y chuy\u1ec3n sang <code>tuple<\/code> ho\u1eb7c d\u00f9ng <code>frozenset<\/code> \/ convert n\u1ed9i dung ph\u00f9 h\u1ee3p.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Th\u00eam v\u00e0o <code>frozenset<\/code> (immutable) \u2014 c\u00e1ch l\u00e0m<\/h2>\n\n\n\n<p><code>frozenset<\/code> l\u00e0 phi\u00ean b\u1ea3n <strong>immutable<\/strong> c\u1ee7a <code>set<\/code>. B\u1ea1n <strong>kh\u00f4ng th\u1ec3<\/strong> g\u1ecdi <code>add()<\/code> hay <code>update()<\/code> tr\u00ean <code>frozenset<\/code>. Thay v\u00e0o \u0111\u00f3, t\u1ea1o <code>frozenset<\/code> m\u1edbi b\u1eb1ng ph\u00e9p to\u00e1n h\u1ee3p (union):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fs = frozenset(&#91;1, 2&#93;)\nfs2 = fs.union({3})         # returns a new frozenset or set-like object\nprint(fs, fs2)\n# or using constructor:\nfs3 = frozenset(list(fs) + &#91;4&#93;)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">fs <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">frozenset<\/span><span style=\"color: #ECEFF4\">(&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">&#93;)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">fs2 <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> fs<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">union<\/span><span style=\"color: #ECEFF4\">({<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">})<\/span><span style=\"color: #D8DEE9FF\">         <\/span><span style=\"color: #616E88\"># returns a new frozenset or set-like object<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">fs<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> fs2<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># or using constructor:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">fs3 <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">frozenset<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">list<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">fs<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #B48EAD\">4<\/span><span style=\"color: #ECEFF4\">&#93;)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><em>Ghi ch\u00fa:<\/em> <code>frozenset<\/code> d\u00f9ng khi b\u1ea1n c\u1ea7n m\u1ed9t t\u1eadp <strong>b\u1ea5t bi\u1ebfn<\/strong> (v\u00ed d\u1ee5 d\u00f9ng l\u00e0m key trong dict ho\u1eb7c ph\u1ea7n t\u1eed c\u1ee7a set kh\u00e1c).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Hi\u1ec7u n\u0103ng &amp; best practices khi th\u00eam ph\u1ea7n t\u1eed<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>set<\/code> trong Python \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t tr\u00ean <strong>hash table<\/strong>, do \u0111\u00f3 <strong>th\u00eam ph\u1ea7n t\u1eed trung b\u00ecnh l\u00e0 O(1)<\/strong> (average-case constant time). Tuy nhi\u00ean trong tr\u01b0\u1eddng h\u1ee3p x\u1ea5u (hash collision ho\u1eb7c rehashing) \u0111\u1ed9 ph\u1ee9c t\u1ea1p c\u00f3 th\u1ec3 t\u0103ng l\u00ean. V\u00ec v\u1eady trong h\u1ea7u h\u1ebft tr\u01b0\u1eddng h\u1ee3p b\u1ea1n c\u00f3 th\u1ec3 coi <code>add()<\/code>\/<code>update()<\/code> r\u1ea5t nhanh. <a href=\"https:\/\/stackoverflow.com\/questions\/7351459\/time-complexity-of-python-set-operations?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Stack Overflow+1<\/a><\/li>\n\n\n\n<li>N\u1ebfu b\u1ea1n c\u1ea7n th\u00eam <strong>r\u1ea5t nhi\u1ec1u<\/strong> ph\u1ea7n t\u1eed l\u1eb7p \u0111i l\u1eb7p l\u1ea1i, vi\u1ec7c thu th\u1eadp t\u1ea5t c\u1ea3 ph\u1ea7n t\u1eed v\u00e0o m\u1ed9t iterable (list\/other set) r\u1ed3i d\u00f9ng <strong>m\u1ed9t l\u1ea7n<\/strong> <code>update()<\/code> th\u01b0\u1eddng hi\u1ec7u qu\u1ea3 h\u01a1n l\u00e0 l\u1eb7p nhi\u1ec1u l\u1ea7n <code>add()<\/code>.<\/li>\n\n\n\n<li>N\u1ebfu b\u1ea1n ph\u1ea3i gi\u1eef tham chi\u1ebfu c\u0169 (nhi\u1ec1u bi\u1ebfn tr\u1ecf t\u1edbi c\u00f9ng set) v\u00e0 kh\u00f4ng mu\u1ed1n \u1ea3nh h\u01b0\u1edfng bi\u1ebfn kh\u00e1c, <strong>s\u1eed d\u1ee5ng <code>union()<\/code> \u0111\u1ec3 t\u1ea1o set m\u1edbi<\/strong> thay v\u00ec <code>update()<\/code> ho\u1eb7c <code>|=<\/code> s\u1ebd an to\u00e0n h\u01a1n.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">9. K\u1ebft lu\u1eadn<\/h2>\n\n\n\n<p>Th\u00eam ph\u1ea7n t\u1eed v\u00e0o <code>set<\/code> trong Python kh\u00f4ng ch\u1ec9 c\u00f3 m\u1ed9t c\u00e1ch \u2014 m\u00ecnh c\u00f3 th\u1ec3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>d\u00f9ng <code>add()<\/code> \u0111\u1ec3 <strong>th\u00eam m\u1ed9t ph\u1ea7n t\u1eed<\/strong> v\u00e0 thay \u0111\u1ed5i set t\u1ea1i ch\u1ed7;<\/li>\n\n\n\n<li>d\u00f9ng <code>update()<\/code> \u0111\u1ec3 <strong>th\u00eam nhi\u1ec1u ph\u1ea7n t\u1eed t\u1eeb iterable(s)<\/strong>;<\/li>\n\n\n\n<li>d\u00f9ng <code>union()<\/code> ho\u1eb7c <code>|<\/code> \u0111\u1ec3 <strong>t\u1ea1o set m\u1edbi<\/strong> (non-mutating);<\/li>\n\n\n\n<li>d\u00f9ng <code>|=<\/code> \u0111\u1ec3 <strong>h\u1ee3p v\u00e0 c\u1eadp nh\u1eadt ngay<\/strong> (mutating);<\/li>\n\n\n\n<li>v\u1edbi <code>frozenset<\/code> (immutable) ta ph\u1ea3i <strong>t\u1ea1o b\u1ea3n sao m\u1edbi<\/strong> (v\u00ed d\u1ee5 b\u1eb1ng <code>union<\/code>).<\/li>\n<\/ul>\n\n\n\n<p>Hi\u1ec3u r\u00f5 s\u1ef1 kh\u00e1c bi\u1ec7t <strong>mutating vs non-mutating<\/strong> (v\u00ed d\u1ee5 <code>update()<\/code> vs <code>union()<\/code>), v\u00e0 <strong>hashable vs unhashable<\/strong> (c\u00e1i n\u00e0o c\u00f3 th\u1ec3 th\u00eam \u0111\u01b0\u1ee3c) s\u1ebd gi\u00fap b\u1ea1n ch\u1ecdn ph\u01b0\u01a1ng ph\u00e1p ph\u00f9 h\u1ee3p v\u00e0 tr\u00e1nh l\u1ed7i th\u01b0\u1eddng g\u1eb7p. Trong \u0111a s\u1ed1 tr\u01b0\u1eddng h\u1ee3p, <code>add()<\/code> v\u00e0 <code>update()<\/code> l\u00e0 \u0111\u1ee7 cho thao t\u00e1c th\u00eam \u2014 c\u00f2n n\u1ebfu b\u1ea1n c\u1ea7n gi\u1eef set c\u0169 th\u00ec d\u00f9ng <code>union()<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. T\u00e0i li\u1ec7u tham kh\u1ea3o<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Python Software Foundation. <em>Tutorial \u2014 Data structures: Sets<\/em>. Python 3 Documentation. <a href=\"https:\/\/docs.python.org\/3\/tutorial\/datastructures.html?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Python documentation<\/a><\/li>\n\n\n\n<li>Python Software Foundation. <em>Reference \u2014 Data model (set and frozenset description)<\/em>. Python 3 Reference. <a href=\"https:\/\/docs.python.org\/3\/reference\/datamodel.html?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Python documentation<\/a><\/li>\n\n\n\n<li>Codecademy. <em>Python <code>set.add()<\/code> documentation (reference)<\/em>. <a href=\"https:\/\/www.codecademy.com\/resources\/docs\/python\/sets\/add?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Codecademy<\/a><\/li>\n\n\n\n<li>GeeksforGeeks. <em>Python Set <code>update()<\/code><\/em>. <a href=\"https:\/\/www.geeksforgeeks.org\/python\/python-set-update\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">GeeksforGeeks<\/a><\/li>\n\n\n\n<li>StackOverflow discussion \u2014 <em>Difference between <code>union()<\/code> and <code>update()<\/code> (mutating vs non-mutating)<\/em>.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Set l\u00e0 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u r\u1ea5t h\u1eefu \u00edch khi m\u00ecnh c\u1ea7n l\u01b0u t\u1eadp h\u1ee3p c\u00e1c ph\u1ea7n t\u1eed kh\u00f4ng tr\u00f9ng v\u00e0 kh\u00f4ng quan t\u00e2m \u0111\u1ebfn th\u1ee9 t\u1ef1. Khi x\u1eed l\u00fd d\u1eef li\u1ec7u th\u1ef1c t\u1ebf \u2014 lo\u1ea1i b\u1ecf ph\u1ea7n t\u1eed tr\u00f9ng, ki\u1ec3m tra membership nhanh, hay thao t\u00e1c c\u00e1c ph\u00e9p to\u00e1n t\u1eadp h\u1ee3p \u2014 set th\u01b0\u1eddng l\u00e0 l\u1ef1a ch\u1ecdn ph\u00f9 h\u1ee3p.<\/p>\n","protected":false},"author":1,"featured_media":1726,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"googlesitekit_rrm_CAowieHDDA:productID":"","footnotes":""},"categories":[41],"tags":[40],"class_list":["post-1609","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kien-thuc-lap-trinh","tag-python-co-ban"],"_links":{"self":[{"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/posts\/1609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/comments?post=1609"}],"version-history":[{"count":2,"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/posts\/1609\/revisions"}],"predecessor-version":[{"id":1729,"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/posts\/1609\/revisions\/1729"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/media\/1726"}],"wp:attachment":[{"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/media?parent=1609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/categories?post=1609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kienthucmo.com\/vi\/wp-json\/wp\/v2\/tags?post=1609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}