使用列表和矩陣

因此,本示範將介紹列表和矩陣的一些基本特徵。所以我將從清單開始。我將獲得一個新的腳本編輯器視窗。再次強調,鍵盤快速鍵是 Ctrl+T。我會調整其大小並重新排列。讓我繼續把日誌帶到日誌前面。我將創建一個變量,我將其稱為“我的列表”。我將把列表函數的結果分配給它。因此單字清單打開括號,我將使用變數 a、b。然後我要計算的平方根,也就是 sqrt,然後放在括號裡。我將繼續重新格式化以獲取其中的大寫字母和空格。我將運行該腳本。因此,日誌中顯示的只是已指派包含三個元素的清單的資訊。如果我將滑鼠懸停在清單上,我們會看到它儲存了我輸入的未評估的項目。因此,它是兩個變數和函數平方根在我的腳本編輯器視窗的新行上,我將請求對清單中的項目進行評估。因此我將輸入 eval list 開啟括號 my list。我就講這個。所以我看到了評估結果。現在,我的清單仍未評估。因此,如果我想處理評估清單的結果,一件事就是將評估清單的結果分配給新清單。不過,我們也可以使用其他一些方法來使用下標來處理清單中的評估項目。因此,在我談論這個之前,讓我先談談清單的下標一般情況。所以我要換一條路線。我將用方括號輸入我的清單。我將輸入 a 來提取清單中的第二項。如果我只運行那行,我看到的就是未評估的項目。那如果我想要評估結果怎麼辦?好吧,我實際上可以回到這裡的第二行。我可以請求評估我的列表,然後對該結果進行下標。因此,我將在其中放置一個打開的方括號,然後關閉方括號。我將使用桌上型電腦鍵盤最右側數字鍵盤上的 Enter 鍵再次運行該行。因此,我只需對評估清單進行下標即可獲得該結果。我們討論了修改清單。所以我想去一條新線。我將使用插入。因此插入將會就地修改清單。所以我要打開括號。我正在修改什麼清單?嗯,它存儲在我的列表中。這是第一個論點。我想要添加什麼?我將添加約翰的名字。這是一個字串。如果我不在那裡放置逗號並且不提供第三個參數,它就會將其放在列表的末尾。但我要使用逗號,並且我要輸入 a 作為可選的第三個參數,將其放在第二個位置。然後,我就運行那條線。並且插入實際上不會向日誌傳回任何內容。但是如果我將滑鼠懸停在腳本中出現的任何清單上,您都會看到它已修改為在第二個位置上顯示名稱 John。現在,假設我有一個列表,也許它是由 JSL 函數傳回給我的,或者它已被用來收集用戶輸入。我需要在清單中找到一個項目,以便可以將其刪除。我知道它——嗯,我不知道它在清單中。我想先查詢它是否在列表中。如果是的話,我希望能夠將其刪除。所以我要建立一個變數來儲存物品 John 的位置。我會稱之為 pos。我將把 contains 函數的結果賦給它。我們已經看到了包含字串。現在它包含一個清單。我們正在列表中查找字串 John,當然,它區分大小寫。如果我運行該行,則返回並儲存在變數 pos 中的結果是,因此,如果我想從列表中刪除它,例如,我可以繼續並從左括號中鍵入 remove。我們正在查看我的清單。我不想只刪除最後一個項目(如果我在第一個參數後沒有提供任何內容,我就會得到最後一個項目),而是要使用變數 pos。我負責這條線路。然後傳回一個包含被刪除元素數量的清單。預設情況下,我們從第二個參數指定的位置開始取一個。所以我得到了一個包含該字串的列表。如果我想在腳本的其他位置使用清單中的該元素,我實際上可以將該結果指派給它自己的變數。我也可以透過使用下標將其從返回的清單中提取出來,所以讓我——現在,我的清單不再包含約翰了。我要再跑我的路線。 pos 中儲存的值仍然相同。我將運行行,這樣就傳回了不在列表中的字串。如果我將滑鼠懸停在列表上,我們可以看到它已恢復到先前的值。讓我們討論一下矩陣。我將右鍵單擊日誌以清除它,然後在腳本編輯器視窗中選擇所有內容並將其刪除。所以我將從模擬人開始,他們將成為我的矩陣中的行。每個人將擲骰子五次,都是六面骰子。這就是我的專欄。我將使用隨機數產生器來產生這些,但我將從一個特定的種子值開始,這樣如果你跟著做,你就會得到完全相同的隨機數。我們將使用一個名為 j 函數的函數,它可以建立一個具有指定行數和列數的矩陣。這些是它的前兩個參數,然後矩陣中的值是什麼,這是第三個參數。因此我將使用值為的隨機重置函數,再次強調,這只是為隨機數產生器指定起始種子。因此我將繼續運行它。然後在新行上,我將建立一個變數 m,它將被賦值為 j 函數的結果。再一次,我先模擬人的行數,然後是列數,擲六面骰子五次。我將使用帶有參數的隨機整數函數 - 我們將從開始並選擇隨機數,並且,再次,我可以重新格式化它只是為了讓它看起來有點 - 哎呀,我運行了它而不是重新格式化它。我仍然可以重新格式化它。好了。所以它現在也在運作。如果我們把對數稍微放大一點,你就會看到我有一行一列的矩陣。我該如何引用該矩陣中的元素?好吧,我們使用下標。所以我要去嘗試一條新路線。也許我對第五個人第三次擲骰子的結果感興趣。所以我要對變數名稱 m 進行下標,即 m 然後是方括號。對於行號,用逗號表示;對於列號,用方括號結束並運行該行。因此第五個人在第三次擲骰子時擲出了 ,我們實際上可以驗證這一點。所以有一、二、三、四,這是第五行,這是第三次擲骰子。現在,如果我想查找整行或整列怎麼辦?好吧,在這裡的新行上 - 實際上,我將使用同一行,只需替換行中的下標假設我想要所有行,所以我輸入第一個下標。然後在逗號後面,我將輸入一個,表示我不希望它選擇任何特定的列。這將是每一列的行。我可以運行它。這樣我就可以獲得所有值。如果您想向上捲動,我們可以驗證這些確實是行中的值,事實上,這就是我們傳回的值。我可以做同樣的事情來選擇一列,其中我只需要行下標,然後是列號。但假設我想刪除整行。假設我認定第三個人在擲骰子時作弊了。所以我要用 a 和 a 作為下標,然後在分號之前,我要為該行分配一個空矩陣的值。所以我只需打開和關閉方括號。如果我運行該行,返回日誌的是一個空矩陣。如果我將滑鼠懸停在 m 上並且您想要計算行數,您會看到現在只有九行。現在,再試一次我們可以用矩陣做的一些事情,假設剩下的九個人每人第六次擲骰子。所以我要就地做這件事。操作員,我會有m。然後賦值運算子將是 Concat,因此它是雙豎線和等號。沒有空格,因為這些包含多個字元的運算符的組件之間不能有空格。我將再次使用 j 函數。我們只有九排。我想要一列。我將再次使用隨機整數。對於它的參數,它仍然是一個六面骰子,因此我將提供,因此當我運行該行時,這將通過添加第六列來修改 m。現在您可以看到矩陣中有六列。讓我們清除日誌。我將重新開始為 m 分配值。我不會再使用隨機數字了。所以我要清除腳本編輯器視窗的內容。我將初始化一個計數器變數 i 並為其分配值,因此我將運行它來初始化它。然後在新行上,我將為 m 分配一個不同的矩陣。因此 m 將被賦值為 j 函數的結果。它有五行。這個矩陣有五行、五列,而且從開始,矩陣的每個元素都會增加 i。因此我將使用 i plus plus,即在原地進行加法運算的後增量運算符。我將繼續運行該操作。所以我有一個矩陣。請注意,我們是按行遞增,而不是按列遞增。這對於我們即將看到的另一種下標方法很重要。因此我們按行遞增。現在,如果我想要一個實際上上升到的序列,那麼肯定有很多不同的方法可以做到這一點。但一種快捷的方式就是將我剛剛創建的矩陣中的每個元素乘以,然後我們可以再次向量化這些操作。我不需要迴圈遍歷矩陣。我只是分配 - 我要做另一個就地分配 - m,然後星號等於,所以乘以我們不必就地完成。但我不會創建新變量,而是這樣做。所以再說一次,我不需要循環。它將逐個元素地將所有內容相乘,然後我運行它。因此有一個矩陣,其增量為從到現在,創建此矩陣的另一種方法是分兩步,從索引函數開始。所以我要清除腳本編輯器視窗中的內容。我將繼續並清除日誌。在腳本編輯器視窗中,我將輸入 m。並且將分配由索引函數(索引開括號)產生的值。我們將從開始我們將數到可選的第三個參數,我將在這裡使用它來表示增量。因此我們將按照以下方式進行,這是創建矩陣的第一步,我們有矩陣。因此我們使用索引函數來建立一個行向量。然後,我就可以塑造它。所以我要去嘗試一條新路線。我要再次覆蓋m。因此 m 將是形狀函數的結果,該函數將以 m 作為其第一個參數並將其維度變更為五行和五列。您必須非常小心地使用這個形狀函數。如果在這種情況下您的行向量與我在此處指定的方陣不匹配,則如果您指定的形狀矩陣太小,JMP 將截斷該向量。或者如果你指定一個更大的矩陣,它就會開始重複向量。因此,使用形狀函數時要小心謹慎。所以我想運行它。還有那個方陣,從到以現在的增量進行,除了在 JMP 中通常有很多方法可以完成所有事情之外,我想要這樣做的部分原因是為了討論另一種下標方法。我們已經看到了逐行逐列的下標。我想談談您有時會看到的單一下標。所以如果我想要——我們可以使用 contains 函數——我們已經看到它用於字串。您可以將它與列表一起使用。我們可以將它與矩陣一起使用。如果我想找到矩陣中目前儲存的數字 m 的位置,那麼,如果我描述的話,我會說,好的,它是行列,所以我會使用逗號下標。但如果我要求 JMP 幫我找到它——那麼我只會使用包含。再次,在實踐中,您的腳本可能會將此結果指派給一個變數。我不需要在這裡這樣做 - 包含然後 m 逗號 JMP 不會給我它會給我一個單一的值。那麼,這個單一價值是如何運作的呢?單值下標 - 所以如果我回來 - 我將轉到這裡的新行並輸入 m,然後輸入帶有單值下標的方括號並運行它。這就是單值下標將把我的矩陣視為行向量並從第一個位置開始計數。因此,當我們回到日誌中查看索引函數的結果時,單一下標會將其視為行向量並按行計數,就像我們按行遞增一樣,以獲得該值的位置。稍後我們處理矩陣時,也會看到 JMP 將單一下標傳回給我們的其他範例。我們在這裡要做的最後一件事只是一種任意計算,以說明有些函數可以將矩陣作為參數,即計算函數——所以我們已經看到了形狀函數和包含。但是我要在這裡換行並輸入 log,然後將 m 作為其參數除以,關於這個例子的另一件事——好吧,讓我運行它。然後我會告訴你關於這個例子的另一件事。所以我剛剛對每個元素進行了計算並除以但我想提的另一件事是,在 JSL 中,函數可以將函數作為參數。我們將始終看到這一點。我們已經看到了一些例子。所以這個除法運算符,實際上是一個以 m 的對數作為參數的除法函數,然後我不需要計算 m 的對數並將其儲存在變數中以將其提供給除法函數。我可以直接進行該計算。再說一次,如果我寫出這個函數,它看起來將會是除以開括號。用逗號和右括號取代運算子。所以我不必提供儲存這些值的變數。我可以在運行除法函數時計算它們。這些是列表和矩陣的幾個例子,以及我們可以使用這些特定類型的資料結構的一些方法。
回复:使用列表和矩陣很好的介紹,謝謝。
回覆:使用列表和矩陣很有幫助。