日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

list 根据某个数字所在位置_富玩车穷玩表,一个案例轻松认识python列表List——计算Hadamard 乘积...

發布時間:2024/9/15 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 list 根据某个数字所在位置_富玩车穷玩表,一个案例轻松认识python列表List——计算Hadamard 乘积... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計算兩個矩陣的 Hadamard 乘積, 矩陣的 Hadamard 積就是兩個同維矩陣的逐元素對應相乘,cij=aij×bij。要求輸入矩陣的行/列數(在這里假設我們使用的是 n × n 的矩陣)

Python 有許多內建的數據結構。數據結構(data structure)是計算機中存儲、組織數據的方式。

1、列表

序列是 Python 中最基本的數據結構。

序列中的每個值都有對應的位置值,稱之為索引,第一個索引是 0,第二個索引是 1,依此類推。

Python 有 6 個序列的內置類型,但最常見的是列表和元組。

列表都可以進行的操作包括索引,切片,加,乘,檢查成員。

此外,Python 已經內置確定序列的長度以及確定最大和最小的元素的方法。

列表是最常用的 Python 數據類型,它可以作為一個方括號內的逗號分隔值出現。

列表的數據項不需要具有相同的類型

創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。

list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]

2、訪問列表中的值

與字符串的索引一樣,列表索引從 0 開始,第二個索引是 1,依此類推。

通過索引列表可以進行截取、組合等操作。

索引也可以從尾部開始,最后一個元素的索引為 -1,往前一位為 -2,以此類推。

使用下標索引來訪問列表中的值,同樣你也可以使用方括號 [] 的形式截取字符;列表截取可以接收第三個參數,參數作用是截取的步長。

3、更新列表

append() 方法來添加列表項

4、刪除列表元素

del 語句來刪除列表的的元素

5、列表操作符

表達式描述
len( )長度
+組合
*重復
In元素是否存在于列表中

6、嵌套列表

使用嵌套列表即在列表里創建其它列表

7、列表函數

序號函數描述
1len(list)列表元素個數
2max(list)返回列表元素最大值
3min(list)返回列表元素最小值
4list(seq)將元組轉換為列表

8、列表方法

序號方法描述
1list.append(obj)在列表末尾添加新的對象
2list.count(obj)統計某個元素在列表中出現的次數
3list.extend(seq)在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
4list.index(obj)從列表中找出某個值第一個匹配項的索引位置
5list.insert(index, obj)對象插入列表
6list.pop([index=-1])移除列表中的一個元素(默認最后一個元素),并且返回該元素的值
7list.remove(obj)移除列表中某個值的第一個匹配項
8list.reverse()反向列表中元素
9list.sort( key=None, reverse=False)對原列表進行排序
10list.clear()清空列表
11list.copy()復制列表

9、將列表當做堆棧使用

列表方法使得列表可以很方便的作為一個堆棧來使用,堆棧作為特定的數據結構,最先進入的元素最后一個被釋放(后進先出)。

用 append() 方法可以把一個元素添加到堆棧頂。用不指定索引的 pop() 方法可以把一個元素從堆棧頂釋放出來。

>>>?stack?=?[3,?4,?5]
>>>?stack.append(6)
>>>?stack
[3,?4,?5,?6]
>>>?stack.pop()
6
>>>?stack
[3,?4,?5]

10、將列表當作隊列使用

也可以把列表當做隊列用,只是在隊列里第一加入的元素,第一個取出來;但是拿列表用作這樣的目的效率不高。在列表的最后添加或者彈出元素速度快,然而在列表里插入或者從頭部彈出速度卻不快(因為所有其他的元素都得一個一個地移動)。

>>>?from?collections?import?deque
>>>?queue?=?deque(["Eric",?"John",?"Michael"])
>>>?queue.append("Terry")?????????????????
>>>?queue.popleft()????????????????
'Eric'

11、列表推導式

列表推導式提供了從序列創建列表的簡單途徑。通常應用程序將一些操作應用于某個序列的每個元素,用其獲得的結果作為生成新列表的元素,或者根據確定的判定條件創建子序列。

每個列表推導式都在 for 之后跟一個表達式,然后有零到多個 for 或 if 子句。返回結果是一個根據表達從其后的 for 和 if 上下文環境中生成出來的列表。如果希望表達式推導出一個元組,就必須使用括號。

#將列表中每個數值乘三,獲得一個新的列表:
>>>?vec?=?[2,?4,?6]
>>>?[3*x?for?x?in?vec]
[6,?12,?18]

>>>?[[x,?x**2]?for?x?in?vec]
[[2,?4],?[4,?16],?[6,?36]]

>>>?freshfruit?=?['??banana',?'??loganberry?',?'passion?fruit??']
>>>?[weapon.strip()?for?weapon?in?freshfruit]
['banana',?'loganberry',?'passion?fruit']

用 if 子句作為過濾器:

>>>?[3*x?for?x?in?vec?if?x?>?3]
[12,?18]
>>>?[3*x?for?x?in?vec?if?x?2]
[]

以下是一些關于循環和其它技巧的演示:

>>>?vec1?=?[2,?4,?6]
>>>?vec2?=?[4,?3,?-9]
>>>?[x*y?for?x?in?vec1?for?y?in?vec2]
[8,?6,?-18,?16,?12,?-36,?24,?18,?-54]
>>>?[x+y?for?x?in?vec1?for?y?in?vec2]
[6,?5,?-7,?8,?7,?-5,?10,?9,?-3]
>>>?[vec1[i]*vec2[i]?for?i?in?range(len(vec1))]
[8,?12,?-54]

列表推導式可以使用復雜表達式或嵌套函數:

>>>?[str(round(355/113,?i))?for?i?in?range(1,?6)]
['3.1',?'3.14',?'3.142',?'3.1416',?'3.14159']

12、嵌套列表解析

Python的列表還可以嵌套。

3X4的矩陣列表:

>>>?matrix?=?[
...?????[1,?2,?3,?4],
...?????[5,?6,?7,?8],
...?????[9,?10,?11,?12],
...?]

將3X4的矩陣列表轉換為4X3列表:

>>>?[[row[i]?for?row?in?matrix]?for?i?in?range(4)]
[[1,?5,?9],?[2,?6,?10],?[3,?7,?11],?[4,?8,?12]]

也可以使用以下方法來實現:

>>>?transposed?=?[]
>>>?for?i?in?range(4):
...?????transposed.append([row[i]?for?row?in?matrix])
...
>>>?transposed
[[1,?5,?9],?[2,?6,?10],?[3,?7,?11],?[4,?8,?12]]

另外一種實現方法:

>>>?transposed?=?[]
>>>?for?i?in?range(4):
...?????transposed_row?=?[]
...?????for?row?in?matrix:
...?????????transposed_row.append(row[i])
...?????transposed.append(transposed_row)
...
>>>?transposed
[[1,?5,?9],?[2,?6,?10],?[3,?7,?11],?[4,?8,?12]]

13、del 語句

使用 del 語句可以從一個列表中依索引而不是值來刪除一個元素。這與使用 pop() 返回一個值不同。可以用 del 語句從列表中刪除一個切割,或清空整個列表(我們以前介紹的方法是給該切割賦一個空列表)。

>>>?a?=?[-1,?1,?66.25,?333,?333,?1234.5]
>>>?del?a[0]
>>>?a
[1,?66.25,?333,?333,?1234.5]
>>>?del?a[2:4]
>>>?a
[1,?66.25,?1234.5]
>>>?del?a[:]
>>>?a
[]

也可以用 del 刪除實體變量:

>>>?del?a

14、編程實現

計算兩個矩陣的 Hadamard 乘積, 矩陣的 Hadamard 積就是兩個同維矩陣的逐元素對應相乘,cij=aij×bij。要求輸入矩陣的行/列數(在這里假設我們使用的是 n × n 的矩陣)

n?=?int(input("輸入數字n:?"))
print("輸入矩陣A")
a?=?[]
for?i?in?range(n):????
a.append([int(x)?for?x?in?input().split()])

print("輸入矩陣B")
b?=?[]
for?i?in?range(n):
b.append([int(x)?for?x?in?input().split()])

#計算Hadamard矩陣
c?=?[]
for?i?in?range(n):
c.append([a[i][j]?*?b[i][j]?for?j?in?range(n)])

print("生成的Hadamard矩陣")
print("-"?*?7?*?n)???#分隔符-----

for?x?in?c:
????for?y?in?x:
????????print(str(y).rjust(5),?end='?')
????print()
print("-"?*?7?*?n)????#分隔符-----

使用了幾次列表推導式。

[int(x) for x in input().split()] 首先通過 input() 獲得用戶輸入的字符串,再使用 split() 分割字符串得到一系列的數字字符串,然后用 int() 從每個數字字符串創建對應的整數值。

[a[i][j] * b[i][j] for j in range(n)] 來得到矩陣乘積的每一行數據。

15、rjust()

返回一個原字符串右對齊,并使用空格填充至長度 width 的新字符串。如果指定的長度小于字符串的長度則返回原字符串。

str.rjust(width[, fillchar])
參數
width -- 指定填充指定字符后中字符串的總長度.
fillchar -- 填充的字符,默認為空格。

溫馨提示:* 本號內容為教育學習使用,軟件、知識更新等,請以實際為準;* 本文部分圖片均來源于網絡,如有侵權,請聯系刪除。

總結

以上是生活随笔為你收集整理的list 根据某个数字所在位置_富玩车穷玩表,一个案例轻松认识python列表List——计算Hadamard 乘积...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。