计算两个矩阵的 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、列表函数

序号 函数 描述
1 len(list) 列表元素个数
2 max(list) 返回列表元素最大值
3 min(list) 返回列表元素最小值
4 list(seq) 将元组转换为列表

8、列表方法

序号 方法 描述
1 list.append(obj) 在列表末尾添加新的对象
2 list.count(obj) 统计某个元素在列表中出现的次数
3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj) 对象插入列表
6 list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj) 移除列表中某个值的第一个匹配项
8 list.reverse() 反向列表中元素
9 list.sort( key=None, reverse=False) 对原列表进行排序
10 list.clear() 清空列表
11 list.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 乘积...相关推荐

  1. python 案例串接_来撸串,一个案例轻松认识Python 字符串——翻转拼接游戏

    键盘输入一个字符串和数字,从头部或尾部截取指定数量的字符串,然后将其翻转拼接.将字符串在第n个字符处翻转拼接,例如输入,python,2;输出头部翻转:thonpy;尾部翻转:onpyth. 字符串是 ...

  2. list 根据某个数字所在位置_【Python学习笔记】09、使用list和tuple

    list Python内置的列表数据类型是:list.list是一种有序的集合,可以随时添加和删除其中的元素.如: >>> classmates = ['Kuaie', 'Bob', ...

  3. 文件循环读取_一个案例轻松认识Python文件处理提取文件中的数字

    1.文件打开 使用 open() 函数打开文件.它需要两个参数,第一个参数是文件路径或文件名,第二个是文件的打开模式.模式通常是下面这样的: "r",以只读模式打开,你只能读取文件 ...

  4. 打印循环换行_一个案例轻松认识Python 循环语句(for)——10以内的素数

    编写程序输出10以内的素数.素数一般指质数.质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 一.for 语句 for循环可以遍历任何序列的项目,如一个列表或者一个字符串. fo ...

  5. python输入学生成绩字典_一个案例轻松认识Python字典-成绩达标判定

    判断学生成绩是否达标的程序 要求输入学生数量,以及各个学生物理.数学.历史三科的成绩,如果总成绩小于 120,程序打印 "不达标!",否则打印 "达标了!". ...

  6. python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE

    学习编程很难.即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作. 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方. ...

  7. thonny和python有什么关系_学习用 Thonny 写代码: 一个面向初学者的Python IDE

    学习编程很难.即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作. 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方. ...

  8. echarts 设置仪表盘数字的位置_一个 ECharts 做的猜数小游戏

    大概 1 年多之前,一位老同学找到我,问能不能帮他做一个非常简单的猜数字游戏,需求是这样的: 在 1 到 100 的整数里,随机选一个数字,让小朋友们猜: 如果猜错了,告知小朋友猜大了还是猜小了: 如 ...

  9. echarts 设置仪表盘数字的位置_【Python代替Excel】11:用Python做数据仪表盘

    今天要学习的,是用Python制作数据仪表盘,也就是用Python作图. 用到的库是matplotlib.pyplot,可以制作 折线图.饼图.柱形图.堆积柱形图.组合图等等. 准备工作 数据下载,共 ...

最新文章

  1. MySQL事务与存储过程
  2. Makefile 里的 subst 函数
  3. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | DexPathList#findClass 函数分析 | DexFile#loadClassBinaryName 函数 )
  4. 14.grafana导入导出;Grafana的安装和Influxdb数据源配置
  5. META http-equiv=X-UA-Compatible content=IE=EmulateIE7
  6. javaPNS进阶-高级推送技巧
  7. .NET 6新特性试用 | 总结:我最喜欢的5个特性
  8. ClassCastException:AdaptiveIconDrawable cannot be cast to BitmapDrawable
  9. JSK-372 图案输出【入门】
  10. 灵悟礼品网上专卖店——新建数据库
  11. matlab支持向量回归,支持向量回归 MATLAB代码
  12. uv纹理坐标设定与贴图规则
  13. 如何将NOAA官网下载的气象雷达原始数据显示为PPI图
  14. springboot整合RabbitMQ启动报错:An unexpected connection driver error occured,Socket Closed
  15. 2011-07-13 wince上面plg插件生成
  16. 自建网络加速服务器,自建DNS缓存服务器加快上网速度
  17. Excel个人学习笔记
  18. opencv-python 绘制图像直方图及直方图均衡化
  19. java 发送邮件和读取邮件(163邮箱为例)
  20. Django 项目试炼blog(10) --补充 滑动验证码

热门文章

  1. Go与PHP区别:类型 引用 语法 错误 性能 应用 生态
  2. aspx repeater 用法_ASP.NET - Repeater 控件
  3. python中文词云生成_Python 词云生成
  4. 广播模块加继电器怎么接线_变频器如何与PLC相连接,怎么用PLC控制?
  5. c语言中主函数创建链表,主函数怎么调用函数(数据结构,创建链表)
  6. html5点线的设置,html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点...
  7. 3pc在mysql的实现_面试官:了解分布式事务?讲讲你理解的2PC和3PC原理
  8. go mysql slave_【Golang+mysql】记一次mysql数据库迁移(一)
  9. html修改span中的内容,在HTML中抓取span的内容
  10. python grpc 并发_在Python中使用gRPC的方法示例【h】