当前位置:   article > 正文

Lumos学习python第五课:数组

Lumos学习python第五课:数组

一、最近有点忙,欠的作业这就补上~

1、题目-----来源力扣

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

  1. 输入: numRows = 5
  2. 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

  1. 输入: numRows = 1
  2. 输出: [[1]]

提示:

  • 1 <= numRows <= 30
2、题解

杨辉三角对于学过数学的人应该很熟悉啦,就像图片中的演示,头尾都为1,掐头去尾后,某行的i等于上一行的i-1和i的和。用数学思维稍微思考一下,代码就差不多啦,可以用到我们上节课学的循环,因为一共有numRows行,这道题关键在于列表(数组的一种)的操作,稍后我们系统地讲一下。

  1. class Solution:
  2. def generate(self, numRows: int) -> List[List[int]]:
  3. result = list()#创建一个外层列表
  4. for i in range(0,numRows,1):#第一层循环,外列表
  5. sret = list()#创建一个内层列表
  6. for j in range(0,i+1,1):#第二层循环,内列表
  7. if j == 0 or j == i:
  8. sret.append(1)
  9. else:
  10. sret.append(result[i - 1][j] + result[i - 1][j - 1])
  11. result.append(sret)
  12. return result

二、数组

1、定义

数组是编程中一种强大的数据结构,它允许存储和操作相同类型元素的集合。在 python 中,数组是通过数组模块创建的,该模块提供了一个简单的接口来创建、操作和处理数组。

2、类型
  1. list 普通的链表,是一种动态数组,初始化后可以通过特定方法动态增加元素。
    定义方式:arr = [元素]
  2. Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。
    定义方式:arr = (元素)
  3. Dictionary 词典类型, 即是Hash数组。字典内部是一个一对一映射的数据关系,就像英汉字典,每一个单词都会有对应的意思,比例为1对1。
    定义方式:arr = {元素k:v}

ps:列表和数组的区别

  • 列表可以包含各种数据类型的存储项目,也就是可以同时包含整数、浮点数、字符串等其他数据类型,数组并非如此,数组存储的是相同单一类型的项目。
  • 列表有内置,数组调用Numpy库。
3、数组的使用方法
List
  1. 定义与创建
  • 定义有初始化 exam1 = [1,2,[1,2,3]];exam2 = [i for i in range(1,6)]
  • 创建一个简单列表 exam5 = list('apple')
  • 创建一个空列表 exam4 = list()
  • 定义无初始化 exam3 = []

     2.列表的访问

  • 列表名[下标]
  • 列表名[开始:结束:步长]

     3.列表元素添加、修改与删除

  • listname.append('value')、listname.extend()、listname.insert()
  • listname[index] = new value
  • del listname[index]、listname.pop(index)、listname.remove(value)

     4.切片

  •  格式:序列名[start : end : step],start表示想要访问的值的起始位置索引(包含该位置);end表示切片的结束位置索引(不包含该位置),不指定则默认为序列长度;step表示切片步长,不指定则默认步长为1,第二个冒号可省略。

  • 序列相加:实现两个序列相连接,不去除重复元素
  • 序列相乘:n*序列,表示将n个序列相加
  1. list1 = ['Lumos']
  2. list2 = ['带你学python']
  3. list3 = list1 + list2
  4. print(list3)
  5. #输出:['Lumos', '带你学python']
  6. print(10 * list3)
  7. #输出:['Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python', 'Lumos', '带你学python']
  • 其他内置函数

len():计算序列的长度,即返回序列中元素的个数

max():返回序列中元素的最大值

min():返回序列中元素的最小值

sum():计算序列中元素的和,使用该函数时,序列中元素必须都是数字,不能是字符或字符串,否则会报错。因为Python解释器无法判断‘+’是要做求和运算还是序列连接操作

list():将序列转化为列表

str():将序列转化为字符串

tuple:将序列转化为元组

sorted:对序列中元素进行排序

reversed():将序列中的元素反向,不会改变原序列顺序,而是指向一个新的地址,如原序列list1,可通过q = list(reversed(list1)),得到一个元素顺序与原序列list1相反的新序列q

enumerate():将序列索引和序列元素组合成元组,形成一个新序列

采用第三方库操作数组
1.创建数组
  1. import numpy as np
  2. arr = np.array([1, 2, 3, 4, 5]) # 创建一维数组
  3. print(arr) # 输出: [1 2 3 4 5]
  4. matrix = np.array([[1, 2, 3], [4, 5, 6]]) # 创建二维数组
  5. print(matrix)
  6. # 输出:
  7. # [[1 2 3]
  8. # [4 5 6]]
2.访问和修改数组元素
  1. import numpy as np
  2. arr = np.array([1, 2, 3, 4, 5])
  3. print(arr[0]) # 输出: 1,访问第一个元素
  4. arr[2] = 10 # 修改第三个元素为10
  5. print(arr) # 输出: [ 1 2 10 4 5]
  6. matrix = np.array([[1, 2, 3], [4, 5, 6]])
  7. print(matrix[0, 1]) # 输出: 2,访问第一行第二列元素
  8. matrix[1, 2] = 7 # 修改第二行第三列元素为7
  9. print(matrix)
  10. # 输出:
  11. # [[1 2 3]
  12. # [4 5 7]]
Tuple
4.创建与使用
  1. tup1 = ('apple','pear',2000,2024,2000)
  2. tup2 = (1,2,3,4,5)
  3. tup3 = "a","b","c","d"
  4. print(tup1[1:5])#访问输出('pear', 2000, 2024)
  5. #不可以修改,只能增加;
  6. tup3 = tup1 + tup2
  7. print(tup3)
  8. tup1.count(2000)# 查找元素在tuple中出现的次数
  9. tup1.index(2000)#查找元素的第一个索引值
5.内置函数
  • cmp(tuple1, tuple2):比较两个元组元素
  • len(tuple):计算元组元素个数
  • max(tuple):返回元组中元素最大值
  • min(tuple):返回元组中元素最小值
  • tuple(seq):将列表转换为元组。
Dictionary

1.字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

2.创建与访问

  1. #创建字典三个例子
  2. test = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
  3. test1 = { 'abc': 456 }
  4. test2 = { 'abc': 123, 98.6: 37 }
  5. print(test,test1,test2)
  6. #输出
  7. #{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} {'abc': 456} {'abc': 123, 98.6: 37}
  8. #访问字典里的值
  9. print(test['Beth'])
  10. #输出:9102

3.修改与删除

  1. #修改字典中的值
  2. test['Beth'] = 2024
  3. print(test['Beth'])
  4. #输出:2024
  5. del test2['abc']
  6. print(test2)
  7. #输出{98.6: 37}
  8. test2.clear() # 清空字典所有条目
  9. print(test2)
  10. del test # 删除字典
4.内置函数
  • cmp(dict1, dict2):比较两个字典元素
  • len(dict):计算字典元素个数,即键的总数
  • str(dict):输出字典可打印的字符串表示
  • type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。
  • dict.clear():删除字典内所有元素
  • dict.copy():返回一个字典的浅复制
  • dict.fromkeys(seq[, val]):创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
  • dict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值
  • dict.has_key(key):如果键在字典dict里返回true,否则返回false。Python3 不支持
  • dict.items():以列表返回可遍历的(键, 值) 元组数组
  • dict.keys():以列表返回一个字典所有的键
  • dict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
  • dict.update(dict2):把字典dict2的键/值对更新到dict里
  • dict.values():以列表返回字典中的所有值
  • pop(key[,default]):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
  • popitem():返回并删除字典中的最后一对键和值

三、最后总要说点啥

这篇文章几乎拖了两周,我每天都会用空余时间查关于数组的资料,像钻牛角尖似的,立志生成一篇最全的python数组教程,可是我翻阅了很多文章,都难以整合一篇最完整、逻辑最缜密的文章,突然在今晚又想到,这一切重要吗?学会就OK了,为什么要纠结这个形式呢,那我不就成为自己最讨厌的那种人了,所以说知识不要停留在表面,要真的学会并举一反三,共勉,各位。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/835460
推荐阅读
相关标签
  

闽ICP备14008679号