Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 韩剧网免费韩国电视剧在线观看,日韩免费在线视频,亚洲日本中文字幕

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          數(shù)據(jù)結(jié)構(gòu)-JavaScript字典結(jié)構(gòu)的編程實現(xiàn)

          數(shù)據(jù)結(jié)構(gòu)-JavaScript字典結(jié)構(gòu)的編程實現(xiàn)

          典是一類特殊的數(shù)據(jù)元素的集合,字典的基本單元為數(shù)對,所謂數(shù)對是指類似(key,value)形式的數(shù)據(jù)。每一個數(shù)對結(jié)構(gòu)包括了關(guān)鍵字key與該元素對應(yīng)的value值,在一個普通字典所組成的數(shù)對集合中,關(guān)鍵字是不相等的,多重字典允許數(shù)對具有相同關(guān)鍵字。字典可以使用基本數(shù)據(jù)結(jié)構(gòu)數(shù)組順序表與鏈表進行設(shè)計與實現(xiàn)。對與使用數(shù)組形式實現(xiàn)字典可直接借助javascript提供的數(shù)組key=>value,定義字典數(shù)據(jù)存儲結(jié)構(gòu)。除此之外也可以通過鏈表形式實現(xiàn)字典的定義與數(shù)據(jù)存儲。常用數(shù)組與鏈表實現(xiàn)字典示意如下圖所示:

          數(shù)組字典類型1

          數(shù)組字典類型2

          鏈表字典類型

          字典結(jié)構(gòu)的數(shù)組存儲與鏈式存儲示意如上圖所示,在明確字典的數(shù)據(jù)存儲形式之后可以進一步定義字典的相關(guān)數(shù)據(jù)操作,字典的操作主要包括字典長度的獲取,字典插入操作、字典刪除操作等。綜上所述,字典抽象數(shù)據(jù)類型描述如下圖所示:

          字典抽象數(shù)據(jù)類型

          字典抽象數(shù)據(jù)類型描述如上圖所示,本例主要結(jié)合編程所使用的JavaScript選擇語言所提供的基本類型進行字典數(shù)據(jù)結(jié)構(gòu)的編程實現(xiàn)。JavaScript本身提供的Map對象就是字典類型數(shù)據(jù)結(jié)構(gòu),因此我們可以以該結(jié)構(gòu)為基礎(chǔ)進行字典類的編程實現(xiàn)。使用JavaScript語言Map類實現(xiàn)抽象數(shù)據(jù)結(jié)構(gòu)字典所定義的方法說明如下:

          1、empty()

          該函數(shù)主要用于實現(xiàn)判斷字典是否為空。 Map對象提供了size屬性主要用于對MAP對象長度進行判斷。當size為0表明字典為空。

          2、size()

          該函數(shù)主要用于實現(xiàn)計算字典長度 。直接返回map.size屬性值作為字典的長度。

          3、find(key)

          該函數(shù)主要用于實現(xiàn)返回關(guān)鍵字為key的數(shù)對 。使用map.has(key)對key進行判斷,如果存在則通過get方法獲取value,并返回key與value對應(yīng)的數(shù)對。

          4、insert(p)

          該函數(shù)主要用于實現(xiàn)向字典中插入p數(shù)對 。直接調(diào)用map.set(key,value)插入數(shù)對。

          5、erase(key)

          該函數(shù)主要用于實現(xiàn)刪除key鍵對應(yīng)的數(shù)對 。直接調(diào)用map.delete(key)從map中刪除元素。

          6、has(p):

          該函數(shù)主要用于實現(xiàn)判斷字典中是否存在p數(shù)對,存在返回true,否則返回false。使用map.has()進行判斷。如果存在key則進一步判斷對應(yīng)的值是否與參數(shù)提供的值相等。

          7、clear()

          該函數(shù)主要用于實現(xiàn)清除字典數(shù)組 。使用map.clear()刪除元素。

          以上給出在JavaScript下自定義字典類的基本方法描述,由此可見借助Map對象可以非常方便實現(xiàn)字典類的定義與編寫。甚至在實際使用過程中直接使用Map表示字典。字典類實現(xiàn)過程中需要使用到一個結(jié)構(gòu)為數(shù)對。因此我們首先定了字典數(shù)對類,該類描述如下:

          數(shù)對類

          以所定義的數(shù)對為基礎(chǔ),結(jié)合Map實例化對象的使用我們可以進一步完成字典類的定義,字典類的定義描述如下:

          字典類設(shè)計

          字典類定義如上圖所示,類提供構(gòu)造函數(shù)用于實現(xiàn)在類實例化過程中完成Map對象的實例化。該類主要方法描述如下圖:

          empty函數(shù)

          find函數(shù)

          clear與has函數(shù)

          insert與erase函數(shù)


          本頭條號長期關(guān)注編程資訊分享;編程課程、素材、代碼分享及編程培訓(xùn)。如果您對以上方面有興趣或代碼錯誤、建議與意見,可以聯(lián)系作者,共同探討。期待大家關(guān)注!如需案例完整代碼請關(guān)注并私信,往期數(shù)據(jù)結(jié)構(gòu)文章鏈接如下:

          數(shù)據(jù)結(jié)構(gòu)-JavaScript線性表的數(shù)組描述與實現(xiàn)

          數(shù)據(jù)結(jié)構(gòu)-JavaScript鏈表的設(shè)計與實現(xiàn)

          數(shù)據(jù)結(jié)構(gòu)-JS優(yōu)先隊列實現(xiàn)及排序應(yīng)用

          數(shù)據(jù)結(jié)構(gòu)-使用JavaScript編程實現(xiàn)隊列(Queue)

          者 | Ruqayyah Sara

          譯者 | 彎月,責(zé)編 | 伍杏玲

          出品 | CSDN(ID:CSDNnews)

          我是一名全棧開發(fā)。前幾天我一直在研究算法和數(shù)據(jù)結(jié)構(gòu),因為對于程序員而言,最重要能力的就是解決問題,所有任何程序員都應(yīng)該擁有強大的解決問題的基礎(chǔ)能力。

          兩天前我開始學(xué)習(xí)Python,開始對這門語言有了更多的理解。我開始將其與JavaScript進行比較,因為JavaScript是我日常工作中使用的語言。

          JavaScript和Python是兩門非常重要的語言。盡管包括我在內(nèi)的許多人都知道Python或JavaScript,但我們并不清楚兩種語言之間的重要區(qū)別。

          我注意到這兩門年語言有許多語義上的區(qū)別,相信理解這些區(qū)別對我和對其他人都有很大幫助。在本文中,我會比較我在兩門語言中遇到的一些基礎(chǔ)概念。所以,如果你熟悉JavaScript或Python,想了解二者的差異,那么你就來對地方了!

          注釋

          JavaScript

          使用雙斜線(//)作為單行注釋,/* */ 作為多行注釋。

          Python

          使用 # 作為單行注釋,使用三引號""" """ 作為多行注釋。

          代碼塊

          JavaScript

          JavaScript中的每個代碼塊都必須放在花括號({})中,每條語句必須使用分號 ; 結(jié)束。

          var a=2;
          if(a>0){
          console.log("Positive");
          }
          else{
          console.log("Negative");
          }

          Python

          Python中的代碼塊使用縮進表示。它不使用花括號或圓括號,而是使用空白。每條語句都需要換行。

          a=2

          if a>0:

          print("Positive")

          else:

          print("negative")

          print("does not belong to else block")

          數(shù)據(jù)類型

          我無法在本文中完整地討論JavaScript和Python之間的數(shù)據(jù)類型差異,這里我們只討論主要的差異。

          基本數(shù)據(jù)類型

          • 上面的表格展示了JavaScript和Python的基本數(shù)據(jù)類型。JavaScript中的Number類型表示Int和float值,由編譯器在運行時確定。而JavaScript(ES10)中的BigInt用于存儲大整數(shù),而Python使用Int表示所有尺寸的整數(shù)。

          • JS使用關(guān)鍵字表示空值,Python使用None。

          • Python沒有undefined和symbol的概念,這些是JavaScript特有的。

          • Python有一種特殊的數(shù)據(jù)類型——complex,用于表示復(fù)數(shù) x + yj,其中x是實部,y是虛部。

          a=3+4j
          print(a.real) #3
          print(a.imag) #4

          非基本數(shù)據(jù)類型

          • 上圖展示了復(fù)雜的(或者叫做非基本)數(shù)據(jù)類型。Python中的列表能存儲任何數(shù)據(jù)類型,與JavaScript一樣。

          • 但是Python中的數(shù)組可以使用庫(如NumPy,array)來定義。Python中的數(shù)組只能包含統(tǒng)一數(shù)據(jù)類型。Python中的列表和數(shù)組有很大區(qū)別。數(shù)組上可以執(zhí)行多種數(shù)學(xué)操作,而列表不能。

          • JavaScript中的對象類似于Python中的字典。兩者都包含鍵值對。但對象是JavaScript中的基本組成部分,而字典在Python中只不過是個數(shù)據(jù)容器。

          • Python中的元組是一個不可修改的列表。用元組表示的列表無法被重新定義。而JavaScript沒有這個概念。

          • 因此,Python擁有內(nèi)置的哈希表(字典),而JavaScript沒有內(nèi)置的哈希表、方法或庫。

          變量定義

          JavaScript

          在JavaScript中定義變量需要使用三種主要的關(guān)鍵字:var,let和const。定義方法決定了變量的使用方式(以及作用域)。

          Python

          Python中定義變量不需要使用關(guān)鍵字,只需要給變量名直接賦值即可:

          a=3
          print (a) # 3

          If-Else

          JavaScript

          JavaScript中的條件語句是 if、else if、else還有switch。

          Python

          Python中的條件語句是if、elif和else。

          elif是else-if的縮寫。Python沒有switch語句。相反,可以用字典來代替。

          三元運算符

          JavaScript

          JavaScript的三元運算符(?:)是一個條件運算符,語法為(condition)?(expresssionIfTrue):(expressionIfFalse):

          var age=26;
          var beverage=(age >=21) ? "Beer" : "Juice";
          console.log(beverage); // "Beer"

          Python

          Python中的三元運算符的語法是 (expressionIfTrue) if (condition) else (expressionIfFalse)

          a, b=10, 20

          min=a if a < b else b

          print(min)

          全等運算符

          JavaScript

          全等運算符(===)也叫“嚴格相等運算符”,會比較兩個運算數(shù)并檢查其相等性,而不會進行類型轉(zhuǎn)換,也就是說,它會檢查運算數(shù)的數(shù)據(jù)類型。返回值為布爾。JavaScript只有一個全等運算符。

          var a=3,b="3";
          console.log(a==b); // true
          console.log(a===b); // false

          Python

          Python有兩個全等運算符:is 和 is not。

          is 運算符會測試兩個運算數(shù)是否為同一個對象,is not為is的反面。

          x=5

          if (type(x) is int):

          print ("true") # true

          if ( type(x) is not int):

          print ("true")

          成員運算符

          JavaScript

          成員運算符檢查對象中的特定屬性。JavaScript只有一個成員運算符:in。

          const user={name: 'Sara', age: 19, sex: "female"};
          console.log('name' in car);
          // output: true

          Python

          成員運算符用于驗證某個值是否為成員。Python有兩個成員運算符:in和not in。

          x=24

          y=20

          list=[10, 20, 30, 40, 50 ]

          if ( x not in list ):

          print ("not present") # Output:True

          循環(huán)

          JavaScript

          JavaScript有三種循環(huán):

          • 入口控制循環(huán):for和while(在執(zhí)行循環(huán)語句之前測試條件)

          • 出口控制循環(huán):do-while(執(zhí)行循環(huán)語句之后測試條件)

          // for loop
          var c=["red", "green", "blue", "purple"];
          for (var i=0; i<4; i++){
          console.log(c[i]);
          }
          // prints array// while
          var c=["red", "green", "blue", "purple"];
          while(i<4){
          console.log(c[i]);
          i++;
          } // prints array

          Python

          Python有兩種循環(huán):for和while。Python沒有內(nèi)置的do-while循環(huán)。

          Python的while循環(huán)與JavaScript的for循環(huán)類似。例如下面的例子:

          c=["red", "green", "blue", "purple"]
          i=0
          while i<4:
          print(c[i])
          i +=1 # i++ is invalid

          Python不支持++和--運算符。我們需要使用x+=1和x-=1。

          for循環(huán)用來遍歷序列(列表、數(shù)組和元組)。它使用in操作符和range函數(shù)進行迭代。可以用range生成一系列數(shù)字,該函數(shù)接受三個參數(shù):start,stop和step。

          • start:開始的位置(可選)。默認為0。

          • stop:結(jié)束的位置(必須指定)。

          • step:指定序列中兩個數(shù)字之間的間隔(可選)。

          x=range(5)
          for n in x:
          print(n) # 1,2,3,4x=range(3,9)
          for n in x:
          print(n) # 3,4,5,6,7,8x=range(2,20,2)
          for n in x:
          print(n) # 2,4,6,8,10,12,14,16,18

          以上就是我注意到的最基本的JavaScript和Python之間的語義區(qū)別。

          原文鏈接:https://medium.com/better-programming/semantic-differences-between-javascript-and-python-ed21b1f3ce50

          本文為 CSDN 翻譯,轉(zhuǎn)載請注明來源出處。

          幫朋友找回密碼,需要生成一個密碼字典,然后就寫了一個生成函數(shù)。找回過程中,感嘆密碼如果太短,真的是一點安全都沒有。下面請看測試用例。

          生成函數(shù)

          words參數(shù):二維數(shù)組,長度不限。

          function generatePasswordDictionary(words) {
            const dictionary=[];
            (function generate(index, parentWord) {
              if (index >=words.length) return dictionary.push(parentWord);
              words[index].forEach((currentWord)=> {
                generate(index + 1, parentWord + currentWord);
              });
            })(0, "");
            return dictionary;
          }

          使用方式

          生成結(jié)果

          const fs=require("fs");
          // 根據(jù)情況傳入?yún)?shù)即可。
          const dictionary=generatePasswordDictionary([
            ["i", "I","love", "Love", "LOVE","My", "MY", "my", "mY","country", "counTry", "countrY"],
            ["i", "I","love", "Love", "LOVE","My", "MY", "my", "mY","country", "counTry", "countrY"],
            ["i", "I","love", "Love", "LOVE","My", "MY", "my", "mY","country", "counTry", "countrY"],
            ["i", "I","love", "Love", "LOVE","My", "MY", "my", "mY","country", "counTry", "countrY"],
          ]);
          console.log(dictionary);
          //輸出到文件
          fs.writeFile("./password.txt", dictionary.join("\n"), ()=> {});


          人人為我,我為人人,謝謝您的瀏覽,我們一起加油吧。


          主站蜘蛛池模板: 国产亚洲一区二区三区在线观看| 国产乱码精品一区二区三区四川人| 夜夜嗨AV一区二区三区| 国产主播福利精品一区二区| 国产一区二区三区夜色| 无码乱码av天堂一区二区| 亚洲国产精品第一区二区 | 波多野结衣AV一区二区三区中文| 丰满人妻一区二区三区免费视频| 精品国产一区二区三区av片| 一区二区无码免费视频网站| 中文字幕在线一区二区在线 | 国模精品一区二区三区视频| 无码人妻精品一区二区蜜桃网站| 精品亚洲AV无码一区二区三区 | 久久AAAA片一区二区| 日本一区免费电影| 亚洲另类无码一区二区三区| 日韩免费一区二区三区在线播放| 久久精品国产AV一区二区三区 | 国产av成人一区二区三区| 中文无码精品一区二区三区| 国精产品一区一区三区免费视频 | 国产成人无码精品一区不卡| 日本精品一区二区三区视频| 精品中文字幕一区在线| 国产一区二区三区夜色| 久久精品亚洲一区二区| 麻豆一区二区在我观看| 韩国美女vip福利一区| 在线成人综合色一区| 视频在线一区二区| 精品亚洲一区二区| 国产乱人伦精品一区二区| 日韩伦理一区二区| 国产AV午夜精品一区二区三| 精品无码AV一区二区三区不卡| 无码中文字幕一区二区三区| 日韩精品一区二区三区在线观看| 一区二区乱子伦在线播放| 亚洲综合无码一区二区三区 |