Lumos学习python第五课:数组

本文介绍了如何用Python生成杨辉三角,并详细讲解了数组(列表、元组、字典)的概念、定义、操作方法以及numpy库的使用。作者强调了编程学习中理解和应用的重要性,而非过分纠结于理论细节。
摘要由CSDN通过智能技术生成

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

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

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

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

示例 1:

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

示例 2:

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

提示:

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

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

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        result = list()#创建一个外层列表
        for i in range(0,numRows,1):#第一层循环,外列表
            sret = list()#创建一个内层列表
            for j in range(0,i+1,1):#第二层循环,内列表
                if j == 0 or j == i:
                    sret.append(1)
                else:
                    sret.append(result[i - 1][j] + result[i - 1][j - 1])
            result.append(sret)
        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个序列相加
list1 = ['Lumos']
list2 = ['带你学python']
list3 = list1 + list2
print(list3)
#输出:['Lumos', '带你学python']

print(10 * list3)
#输出:['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.创建数组
import numpy as np

arr = np.array([1, 2, 3, 4, 5])  # 创建一维数组
print(arr)  # 输出: [1 2 3 4 5]

matrix = np.array([[1, 2, 3], [4, 5, 6]])  # 创建二维数组
print(matrix)
# 输出:
# [[1 2 3]
#  [4 5 6]]
2.访问和修改数组元素
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

print(arr[0]) # 输出: 1,访问第一个元素

arr[2] = 10  # 修改第三个元素为10
print(arr)   # 输出: [ 1  2 10  4  5]

matrix = np.array([[1, 2, 3], [4, 5, 6]])

print(matrix[0, 1])  # 输出: 2,访问第一行第二列元素

matrix[1, 2] = 7  # 修改第二行第三列元素为7
print(matrix)
# 输出:
# [[1 2 3]
#  [4 5 7]]
Tuple
4.创建与使用
tup1 = ('apple','pear',2000,2024,2000)
tup2 = (1,2,3,4,5)
tup3 = "a","b","c","d"
print(tup1[1:5])#访问输出('pear', 2000, 2024)
#不可以修改,只能增加;
tup3 = tup1 + tup2
print(tup3)
tup1.count(2000)# 查找元素在tuple中出现的次数
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.创建与访问

#创建字典三个例子
test = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
test1 = { 'abc': 456 }
test2 = { 'abc': 123, 98.6: 37 }
print(test,test1,test2)
#输出
#{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} {'abc': 456} {'abc': 123, 98.6: 37}
#访问字典里的值
print(test['Beth'])
#输出:9102

3.修改与删除

#修改字典中的值
test['Beth'] = 2024
print(test['Beth'])
#输出:2024

del test2['abc']
print(test2)
#输出{98.6: 37}

test2.clear()      # 清空字典所有条目
print(test2)
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了,为什么要纠结这个形式呢,那我不就成为自己最讨厌的那种人了,所以说知识不要停留在表面,要真的学会并举一反三,共勉,各位。

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值