【无标题】

本文详细讲解了Python中的序列类型,包括Range、元组、列表(List)和字符串(String),介绍了它们的创建方式、特点以及常见操作方法,强调了在机器学习等场景中处理大量数据时序列容器操作的重要性。
摘要由CSDN通过智能技术生成

Python 基础语法教学Part 2

序列型别

1. 范围

Range这个型别可用来创建并储存特定范围内的整数,故得名Range。
必须特别注意的是,一旦Range被创建了,里面的内容是不可修改的
在Python中,我们有几个方法可以创造Range。

  • 范围(停止)
    • stop:停止点
  • 范围(开始、停止)
    • start:起始点
    • stop:停止点
  • 范围(开始、停止、步长)
    • start:起始点
    • stop:停止点
    • step:间隔

话不多说,让我们来看看程式:

r1 = range(10)
r2 = range(5, 50, 5)

print(type(r1))
print(r1)
print(r2)

执行上述范例后,我们可以得知几件事情:

  • 若没有给起始值,将预设为0
  • 若没有给间隔,将预设为1
  • 遇到停止点后,创造的过程就会终止,因此Range中的数字将不会包含停止点
2.元组

Tuple可用来存放一组资料。
这组资料的个数不限,型别也不须相同。
同Range,一旦被创造,将无法修改内容
值与值之间,要以,隔开。

简单范例:

t1 = 10, 20
# it can hold different types of data
t2 = 10, 'hello world'

print(type(t1))
print(t1)
print(t2)
3. 清单

List即为Python中的阵列(Array)。
如果你不知道什么阵列也没关系,让哥来解释给你听。
阵列是一种容器,可用来储存众多资料。与Tuple最大的不同处在于,针对一个以创建的阵列,你可以随时增加或减少其内部资料的个数,也可以修改里面的内容。

范例程式:

arr1 = [1, 2, 3]
arr2 = [10, 'hello world', 8.7]
arr1[0] = [1, 2, 3]

print(type(arr1))
print(arr1)
print(arr2)

要点:

  • 宣告阵列可用[]
  • 阵列内的资料型别不必相同
  • 对于任何序列型别来说,我们可用[index]的语法来存取其中的元素。那这个index要带多少才能拿到想要的元素呢? 简单来说,大部分的程式语言,容器的index都是从0起算的。因此假设今天有个阵列有三个元素,他们对应的index就为0, 1, 2。
4. String (字串)

其实我们一开始介绍过的基本型别String,也是一种序列型别喔。
一个比较好理解的方式为,其实String就像是一堆字元排在一起组合而成的(字元指的为一个字)。
需要注意的是,字串的内容也是不能修改的。

范例:

str1 = 'hello python'
str2 = str1
# str2[0] = 'y'
# a = a + b could be written as a += b
str2 += ' journey'
print(str2 is str1)

print(str1)
result = str2.split(' ')
print(result)
result_back = '***'.join(result)
print(result_back)

要点:

  • 如果今天想要用两个字串,组合成一个新的字串,我们可用+来做到这件事
  • 假设今天我们想判断两个变数是否共享记忆体位置(判断两者是否为同一个人),可用is来做到
  • 两个很重要String方法一定要知道,split & join
  • split可将一个字串用指定的方式(字串)拆散为阵列。以上述的例子来说,我们将'hello python journy',以空白' '隔开成阵列,于是他便成了['hello', 'python', 'journey']
  • join可将一个阵列,用指定的方式(字串)组合成字串。以上述的例子来说,我们['hello', 'python', 'journey']'***'组合,就成了hello***python***journey
序列型别的操作
1. 取出部分的内容

若是想从一个序列容器中取出一部份的内容来使用,我们可以用seq[start:stop:step]这样的语法来达成(是不是有点眼熟啊!)
必需要注意的是,上面的start, stop, step要填入的是元素的index。

范例:

str1 = 'hello world'
arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# mind the stop
arr2 = arr1[0:5]
# -1 represent the last element
arr3 = arr1[0:-1:2]
# you can ignore the args...
arr4 = arr1[:]

print(arr2)
print(arr3)
print(arr4)
print(arr4 is arr1)
print(str1[5:])
# print(arr1[:-1])

要点:

  • step不给预设为1
  • 遇到stop则停止取出,所以index为stop的元素不会被取出
  • 可用-1代表最后一个元素的index
  • start不给则预设为0
  • stop不给则会将start之后的元素都取出
  • seq[start:stop:step]会制造新的容器,因此他们不共享记忆体位置
  • 猜猜看,最后一行会印出什么,拿掉注解再执行,你猜对了吗?
2. 常见的序列容器操作方法
操作描述
x in s检查X是否存在于S这个容器之中
x not in s检查X是否不存在于S这个容器之中
s + t容器S与容器T的内容相加
s * n三个容器S =>s + s + s
len(s)取得容器的长度(里面有几个元素的意思)
min(s)取得容器内的最小值(前提是里面的元素要能比大小啊!)
max(s)取得容器内的最大值
s.index(x[,i[,j]])X元素在S容器的索引值,如果有给i, j就只会在index为i~j的范围找
s.count(x)X这个元素在S这个容器内出现几次

2. 修改序列容器的内容
操作描述
s[i] = xindex为i的元素的内容置换为X
s[i:j] = tindex从ij的元素内容置换为X
s[i:j:k] = tindex从ij的元素,step以为k的方式,将内容置换为X
del s[i:j]把index从ij的元素删除
del s[i:j:k]index从ij的元素,step以为k的方式删除元素
s.append(x)将X塞到S容器的最后面
s.clear()将S容器的内容全部删除(same as del s[:])
s.copy()复制S容器(same as s[:])
s.extend(t)s = s + t
s.insert(i,x)在S容器index为i的位置将X插入,原有的元素(们)将会往后移
s.pop([i])将index为i的元素取出,并将其移出容器
s.remove(x)删除第一个找到的X
s.reverse()让容器的内容顺序颠倒

小结

今天我们介绍了序列容器,这个东西不论在什么语言都是非常重要的。因为大部分的情况下,我们都要同时处理很多笔资料,因此序列容器的操作都必须非常熟悉才行。以机器学习来说,通常会取得很多数据给程式来学习,这时候要怎么操作储存这些资料的容器,就是一大重点呢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值