草庐IT

序列类型

tangyuanzi 2023-04-17 原文

序列类型

字符串 由很多个字符组成的字符序列,字符串属于 **序列类型

序列简介

数值类型:可以表示 数字,数值
	int  
    float 
    bool
序列类型:存储多个数据的一种数据类型
    str :  可以存储数字,字母,特殊符号,中文等数据.表现形式为 一对引号包囊起来的数据
    list 列表
    tuple 元组

数据结构:在编程语言中将会某种方式组合起来的数据元素集合称为数据结构,可以通过每个值所在的位置的编号(称之为下标)来访问它们。

序列数据结构:指一块可以存放多个数据的连续内存空间,这些数据按照一定顺序排序

列表和元组

列表

列表是python内置的一种数据类型,它是一个序列类型,可以装各种数据类型的容器。

list的创建

直接使用[]括起来,各元素用英文逗号分隔开

range()函数

配合range()函数,range()可以根据我们 给定的参数来生成 有相同差值的整数序列* 。

range(start,end,step)
# start 开始    从这个数字开始
# end   结束    到这个数字的前一个数字结束
# 注意 包头不包尾
# step 步长可以不写,默认值就是1


# 列表创一个 1~1000个数字的列表
# 类型转换 是用 圆括号包囊
lis = list(range(1,1001)) 
print(lis)

步长还可以是负数
# 100 ~ 1
print(list(range(100, 0, -1)))

元组

元组和列表相似,都可以存储多个数据。
元组不可修改

元组的创建

  • 直接用()括号括起来,每个元素用逗号分开
  • range()函数,再用tuple做类型转换
t = (1, "二", 5, 7, 9) # 第一种

t = tuple(range(1,101)) # 第二种

序列的基本操作

序列类型:str,list,tuple

下表(索引)

下标是序列中每个元素的编号

下标的作用:可以提取元素。可以通过下标来提取序列中的元素

正向下标:在字符串里面每一个字符都会存在一个下标,下标是从左往右默认由0开始

反向下标:最后一个-1,-2以此类推

切片

想要一次性截取多个值的话,使用切片

语法: 序列[start:end] 来截取相应的元素

start : 开始的下标

end : 结束的下标

注意,切片的下标也是包头不包尾

s = "helloworld"
# 想要取出hello
# 先找到开始的下标 0
# 再找结束的下标 4
print(s[0:5])  # 由于下标是取不到,所以只能取前一位 4
print(s[:5])  # 开始下标如果没写话,默认从头开始 截取
print(s[:])   # 结束下标如果没写话,默认截取到 最后

切片和range很像,都是包头不包尾,然后也有步长的概念

语法:[start:end:步长]  步长默认也是1

s = "hello world"
# hlowrd
print(s[::2]) # 1 2

# dlrow olleh
print(s[::-1]) # 步长为负数,头到右边,尾巴到左边

切片越界不会报错,返回对应数据类型的空值
"" [] ()

序列运算

序列类型可以做 加法 和 乘法

序列的相加 就是 合并 # 同类型相加

序列的相乘 就是 重复和自己拼接 # 和整数相乘

内置函数

内置函数:python官方给提供好的功能,这些功能可以直接使用

函数 功能
len() 计算序列的长度,即返回序列中包含多少个元素。
max() 找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。
min() 找出序列中的最小元素。
sum() 计算元素和。
sorted() 对元素进行排序。
reversed() 反向序列中的元素。返回是迭代器,需要类型转换 建议用切片完成反转

len()

len() : 计算序列的长度,结果返回序列中包含多少个元素 【列表的长度== 列表元素的个数】

max()和min()

max(列表) :找出序列中的最大值

min(列表): 找出序列中的最小值

lis = [9, 5, 7, 2, 1, -5, 100, 30]
print(max(lis))
print(min(lis))

sum()

sum(列表): 对列表中的值进行求和

lis = [9, 5, 7, 2, 1, -5, 100, 30]
print(sum(lis))

4.3.5.5 sorted()

sorted() 对元素进行排序。(默认正序排序)
reverse(参数)

list.sorted(reverse=True) # 逆序

有关序列类型的更多相关文章

  1. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  2. ruby - 检查方法参数的类型 - 2

    我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)

  3. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  4. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  5. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  6. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  7. ruby - 在 Ruby 中比较序列 - 2

    假设我必须(小型到中型)阵列:tokens=["aaa","ccc","xxx","bbb","ccc","yyy","zzz"]template=["aaa","bbb","ccc"]如何确定tokens是否以相同的顺序包含template的所有条目?(请注意,在上面的示例中,应忽略第一个“ccc”,从而由于最后一个“ccc”而导致匹配。) 最佳答案 这适用于您的示例数据。tokens=["aaa","ccc","xxx","bbb","ccc","yyy","zzz"]template=["aaa","bbb","ccc"]po

  8. ruby-on-rails - carrierwave:在序列化动态属性上安装 uploader - 2

    首先,我使用的是rails3.1.3和来自master的carrierwavegithub仓库的分支。我使用after_init钩子(Hook)来确定基于属性的字段页面模型实例并为这些字段定义属性访问器将值存储在序列化哈希中(希望它清楚我是什么谈论)。这是我正在做的事情的精简版:classPage省略mount_uploader命令让我可以访问我想要的属性。但是当我安装uploader时出现错误消息说“nil类的未定义新方法”我在源代码中读到有方法read_uploader和扩展模块中的write_uploader。我如何必须覆盖这些来制作mount_uploader命令使用我的“虚拟

  9. ruby-on-rails - Rails 迁移中的 PostgreSQL 点类型 - 2

    我想使用PostgreSQL中的point类型。我已经完成了:railsgmodelTestpoint:point最终的迁移是:classCreateTests当我运行时:rakedb:migrate结果是:==CreateTests:migrating====================================================--create_table(:tests)rakeaborted!Anerrorhasoccurred,thisandalllatermigrationscanceled:undefinedmethod`point'for#/hom

  10. ruby-on-rails - 我可以用鸭子类型(duck typing)改进这种方法吗? - 2

    希望我没有误解“ducktyping”的含义,但从我读到的内容来看,这意味着我应该根据对象如何响应方法而不是它是什么类型/类来编写代码。代码如下:defconvert_hash(hash)ifhash.keys.all?{|k|k.is_a?(Integer)}returnhashelsifhash.keys.all?{|k|k.is_a?(Property)}new_hash={}hash.each_pair{|k,v|new_hash[k.id]=v}returnnew_hashelseraise"CustomattributekeysshouldbeID'sorPropertyo

随机推荐