首页 > 编程语言 >“数组”类型(python中都可[]的一些数据类型)

“数组”类型(python中都可[]的一些数据类型)

时间:2023-12-07 20:34:10浏览次数:46  
标签:arr ba python 数据类型 bytes 存储 str 数组 字符串

“数组”类型(python中都可[]的一些数据类型)

  • list

    特点是可变的、能动态扩容,可存储Python中的一切对象,使用时不用指定存储的元素的类型。

    >>> arr = ["one","two","three"]
    >>> arr[0]
    'one'
    # 动态扩容
    >>> arr.append(4)
    >>> arr
    ['one', 'two', 'three', 4]
    # 删除一个元素
    >>> del arr[2]
    >>> arr
    ['one', 'two', 4]
    
  • tuple

    tuple的操作与list类似。特点是不可变,不能扩容,可存储Python中的一切对象,使用时不用指定存储的元素的类型。

    >>> t = 'one','two',3
    >>> t
    ('one', 'two', 3)
    >>> t.append(4)
    AttributeError: 'tuple' object has no attribute 'append'
    >>> del t[0]
    TypeError: 'tuple' object doesn't support item deletion
    
    #tuple可以使用+运算符,这个运算将创建一个新的tuple对象用于存储数据。就是说t和t+(1,)是两个东西
    #另外加的那个(1,)格式非常重要。
    >>>t = 'one','two',3
    >>>print(t)
    ('one', 'two', 3)
    >>>print(t+(1,))
    ('one', 'two', 3, 1)
    
  • list和tuple都可存储Python中的一切对象,使用时不用指定存储的元素的类型。

  • array.array

    特点是可变的、存储相同类型的数值,不能存储对象。

    因为array在使用的时候要指定元素数据类型,因此它比list和tuple都有比较高效空间性能。

    # 使用时指定元素数据类型为`float`
    >>> arr = array.array('f', (1.0, 1.5, 2.0, 2.5))
    >>> arr
    array('f', [1.0, 1.5, 2.0, 2.5])
    # 修改一个元素
    >>> arr[1]=12.45
    >>> arr
    array('f', [1.0, 12.449999809265137, 2.0, 2.5])
    # 删除一个元素
    >>> del arr[2]
    >>> arr
    array('f', [1.0, 12.449999809265137, 2.5])
    # 增加一个元素
    >>> arr.append(4.89)
    >>> arr
    array('f', [1.0, 12.449999809265137, 2.5, 4.889999866485596])
    # 如果将一个字符串类型数据存储到一个浮点数的数组将会报错
    >>> arr[0]='hello'
    TypeError: must be real number, not str
    

    /i/ll/?i=20201103162420277.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FkUHl0aG9u,size_16,color_FFFFFF,t_70#pic_center

  • str

    字符串序列str,为什么str字符串会被放在这里,原因就是字符串和数组一样也可以像X[n]一样运用,另外也可以对字符串使用list转换成数组,另外也可以对字符串(就像是对数组一样)进行遍历。

    特点是不可变的Unicode字符序列,也就是说字符串是不可变的。

    >>> s ='123abc'
    >>> s
    '123abc'
    >>> s[0]
    '1'
    >>> s[2]
    '3'
    # 字符串是不可变的序列,不能删除其中的元素
    >>> del s[1]
    TypeError: 'str' object doesn't support item deletion  
    
    # 要对字符串进行操作,可以转化成list  
    >>> sn = list(s)
    >>> sn
    ['1', '2', '3', 'a', 'b', 'c']
    >>> sn.append(9)
    >>> sn
    ['1', '2', '3', 'a', 'b', 'c', 9]
    
    #也可以对字符串(就像是对数组一样)进行遍历。
    >>>a= "abc123"
    >>>for i in a:
    >>>    print(i)
    a
    b
    c
    1
    2
    3
    
    # 字符串中的元素也是字符串对象
    >>> type(s[2])
    <class 'str'>
    >>> type(s)
    <class 'str'>
    
    #str对象也可以执行+操作,它也会生成一个新对象用于存储。
    >>> s2 = s+'33'
    >>> s2
    '123abc33'
    >>> id(s2)
    4605193648
    >>> id(s)
    4552640416
    
  • bytes

    bytes对象用于存储字节序列,它的特点是不可变存储,可存储0-256的数值。

    #如果直接是单独的一个bytes(n)的话,会是n个\x00
    >>> bytes(2)
    b'\x00\x00'
    >>> b = bytes([0,2,4,8])
    >>> b[2]
    4
    >>> b
    b'\x00\x02\x04\x08'
    >>> b[0]=33
    TypeError: 'bytes' object does not support item assignment
    >>> del b[0]
    TypeError: 'bytes' object doesn't support item deletion
    
    #这里bytes比较特殊,就是说,如果直接是加单独的一个bytes(n)的话,会是n个\x00
    >>> print(b+bytes(2))
    b'\x00\x02\x04\x08\x00\x00'
    
    #但是如果是+一个数组的话,就是正常的了
    >>> print(b+bytes([1,3]))
    b'\x00\x02\x04\x08\x01\x03'
    
  • bytearray

    bytearray对象与bytes类似,用于存储字节序列。它的特点是可变的,能动态扩容的字节数组。

    >>> ba = bytearray((1,3,5,7,9))
    >>> ba
    bytearray(b'\x01\x03\x05\x07\t')
    >>> ba[1]
    3
    
    # 删除一个元素
    >>> del ba[1]
    >>> ba
    bytearray(b'\x01\x05\x07\t')
    >>> ba[0]=2
    >>> ba[0]
    2
    
    # 添加一个元素
    >>> ba.append(6)
    
    # 只能添加字节
    >>> ba.append(s)
    TypeError: 'str' object cannot be interpreted as an integer
    >>> ba
    bytearray(b'\x02\x05\x07\t\x06')
    
    # 字节的范围是0-256
    >>> ba[2]=288
    ValueError: byte must be in range(0, 256)
    
    # bytearray转成bytes将生成一个新对象
    >>> bn = bytes(ba)
    >>> id(bn)
    4604114344
    >>> id(ba)
    4552473544
    
  • 总结和区分(思维导图)

    https://gitmind.cn/app/docs/mguk9ndh

  • 之间的转化

    可以转化成list的有:tuple,str。直接加上list()就好

    str和bytes字符串和字节之间的转换:

    str变bytes:bytes(s,encoding='utf-8')或s.encode()

    bytes变str:str(b,encoding='utf-8')或b.decode()

标签:arr,ba,python,数据类型,bytes,存储,str,数组,字符串
From: https://www.cnblogs.com/aster-ist/p/17883883.html

相关文章

  • 聪明办法学Python(Debug)
    前言:尽可能的将bug在设计时变得更容易暴露出来,将某些关键的步骤进行可能的可视化。(print,assert)调试1调试理论的简单介绍bug的触发过程:需求--设计--代码--fault--error--failure2看懂报错信息3利用print方法调试程序4利用assert方法调试程序assert:后面举一个条件,如果不......
  • 如何为python程序debug
    如何为python程序debug 1调试理论的简单介绍bug的触发过程:需求--设计--代码--fault--error--failure2看懂报错信息3利用print方法调试程序4利用assert方法调试程序assert:后面举一个条件,如果不满足,则运行错误5利用你的idea来调试程序 首先打开IDEA2打开所需......
  • 软件测试/人工智能|一文告诉你Python字符串的相关操作
    前言字符串是一个非常重要的数据类型之一。它允许程序员处理文本信息,无论是简单的字母、数字还是复杂的文本数据,都可以用字符串来表示和操作。什么是字符串?在Python中,字符串是由字符序列组成的不可变的数据类型。它可以包含字母、数字、符号和空格等内容。字符串在单引号('')或双引......
  • Java基本数据类型转换
    1.Java基本数据类型转换1.1自动类型转换当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型这个就是自动类型转换数量类型按精度大小排序为:char<int<long<float<doublebyte<short<int<long<float<doubleinta='c';doubled=80注意:有多种类型......
  • Java数据类型
    1.数据类型每一种数据都定义了明确的数据类型,在内存中分配大小不同的内存空间(字节)8大基本数据类型整数类型:存放整数byte,1个字节short,2个字节int,4个字节(默认)long,8个字节浮点类型(小数)float,4个字节double,8个字节(默认)字符型:char,2个字节布尔型:boolean,1个字......
  • C 语言实现抽象数据类型(ADT)之链表
    C语言实现抽象数据类型(ADT)之链表1什么是链表?(懂跳)C语言本身自带了很多基本数据类型,每种基本数据类型的变量总是代表着某个数据,比如:我们通常用整型变量来计数,用浮点型变量来保存价格这样的数据……intcount;doubleprice;而有时候我们需要表示的数据很复杂,比如我们想要......
  • Python基础知识——变量
    Python基础知识——变量2.2变量message="HelloPythonworld"print(message)message="HelloPythonCrashCourseworld!"print(message)mesage="HelloPythonCrashCoursereader"print(mesage)每个变量(variable)指向一个值(value)python始终记......
  • 560. 和为 K 的子数组
    给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2 提示:1<=nums.length<=2*104-1000<=nums[i]<=1000-10......
  • python高级之函数的定义和调用
    Python函数的定义和调用函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。定义一个函数你可以定义一个由自己想要......
  • 聪明办法学python Talk 2 如何debug
    聪明办法学pythonTalk2如何debug1.为什么要调试程序运行(前提过编译器)使得我们只能看到结果错误,即逻辑错误,逻辑错误并不好找,更何况遇到的代码较长就跟不好找到错误,而debug就是便于找到错误,错误大部分是自己的问题,先自己找找问题,别急着怀疑电脑,放平心态慢慢找2.看懂报错i......