zoukankan      html  css  js  c++  java
  • Python 快速入门笔记(2):数据类型

    本系列随笔是本人的学习笔记,初学阶段难免会有理解不当之处,错误之处恳请指正。转载请注明出处:https:////www.cnblogs.com/itwhite/p/12291087.html

    简介

    Python 中常用的数据类型列表:

    类型描述示例
     整数型  可表示正负整数  123、-456
    浮点数型   可表示小数  3.14
    布尔型   表示“真”或“假”   True、False
    None   表示空值  None
    字符串类型   支持序列操作  'aaa', "BBB", '''ccc''', """DDD"""
    列表(list)类型  支持序列操作,类似于其它语言中的数组   [ "Jack", "Bob", "Linda" ]
    元组(tuple)类型   支持序列操作,不可修改,其它同列表  ( "Jack", "Bob", "Linda" )
    字典(dict)类型  类似于 perl 中的 hash 类型  { "name": "Jack", "age": 23 }

    其中:字符串、列表(数组)和元组又统称为“序列”,“序列”都支持索引、切片等操作。

    Python 中使用 type() 内置函数可以返回表示数据类型的字符串,例如:

    >>> type(123)
    <type 'int'>

    布尔类型

     布尔类型只有 True 和 False 两个值,在条件判断时,以下内容会自动转换为 False(除此以外的值,都会转换为 True):

    False None 0 "" () [] {}

    字符串类型

    Python 中,字符串可以通过 单引号(')、双引号(")、三引号('''或""") 包围起来:

    • 单引号:Python 中的单引号与双引号几乎没有区别(这一点与 shell 和 perl 不同),其中转义字符仍然是转义字符,例如:'a b' 表示 a 、换行符、b 三个字符组成的字符串。
    • 双引号:同单引号。
    • 三引号:可以引用多行字符串,例如:
    """
    This is a mult-line
    string
    """

    Python 中字符串默认为 ASCII 编码的,此外用户还可以指定字符串前缀用以告诉解释器如何解析编码格式:

    • 使用 u 或 U 前缀,表示 Unicode 编码,例如:u"中文"(如果不这样写,print出来的可能是乱码);
    • 使用 b 或 B 前缀,表示其中为字节数值,例如:b"x41x42x43"(等同于"ABC")
    • 使用 r 或 R 前缀,表示 raw string,字符串中的 符号不再用作转义,例如:r" "(相当于"\n\t")

    另外,如果你的代码中有使用中文字符串时,请确保文件保存为 utf-8 格式并且在文件头部(第一行或第二行)加上“编码声明”(用以告诉解释器以源文件编码格式)。

    字符串常用操作

    操作示例
    求字符串长度 len("string")
    字符串连接 s1 + s2
    字符串比较 s1 == s2
    字符串查找

    "string".find("ri") # 返回 2
    re.search(r"b.c", "abbbcd")

    字符串分割

    "Jack,Bob,Lucy".split(",")
    re.split(r"pattern", string)

    字符串替换 s2 = s1.replace('old', 'new')
    字符串反转 string[::-1]
    字符串切片 "string"[1:3]返回"tr",请参考“序列”一节
    获取指定位置的字符

    string[1]

    遍历字符串中字符

    for c in string:
        print c

    大小写转换

    "aaa".upper()、"BBB".lower()

    删除前后两端空白符

    "  abc  ".strip() 返回 "abc"
    "  abc  ".rstrip() 返回 "  abc"
    "  abc  ".lstrip() 返回 "abc  "

    格式化字符串

     示例:

    # 方法一:使用类似于 C 语言中 printf() 的格式, % 后面为一个元组
    >>> "My name is %s, I'm %d years old" % ("Jack", 23)
    "My name is Jack, I'm 23 years old"
    
    # 方法二:使用 format() 方法,其中大括号 {} 中的值表示传入参数的索引(或名字),该方法类似于正则式中的反向引用
    >>> "{3} {0} {2} {1} {3} {0}".format("be", "not", "or", "to")
    'to be or not to be'
    >>> "{foo} {} {bar} {}".format(1, 2, bar=4, foo=3)  # 自定义名字和省略名字
    '3 1 4 2'
    >>> "{name} is approximately {value:.2f}.".format(value=3.1415926, name="PI") # 还可以指定精度(格式同 printf())
    'PI is approximately 3.14.'

    # 方法三:使用 format_map() 方法
    >>> jack = { "name": "Jack", "age": 23 }
    >>> "My name is {name}, I'm {age} years old".format_map(jack)
    "My name is Jack, I'm 23 years old"

    列表类型

    Python 中的“列表”(list)也类似于其它语言中的“数组”,只不过它支持更多的操作。示例:

    foo = ["Jack", 23, "male"]
    bar = [1, 2, 3, 4]
    qux = ["Tokyo", "London", "Beijing", "Paris"]

    常用的列表操作(表中示例中会用到上述示例中代码):

    操作示例
     求列表长度  len(foo)
     访问指定元素  foo[1] = 24
     删除指定元素

     del foo[1] # 删除指定下标元素, foo 将变为["Jack", "male"]
     foo.remove(23) # 删除第一个值为 23 的元素

     追加一个元素  bar.append(5) # bar 将变为[1, 2, 3, 4, 5]
     查找指定元素索引(第一次出现的)  qux.index("Beijing") # 返回2
     插入一个元素  qux.insert(2, "Sydney") # 在"London"后面插入(插入的新元素索引为2)
     删除最后一个元素  bar.pop() # bar 将变为 [1, 2, 3]
     反转所有元素  bar.reverse() # bar 将变为 [4, 3, 2, 1]
     列表排序  qux.sort() # qux 将变为 ['Beijing', 'London', 'Paris', 'Tokyo'],注意 sort() 不返回任何值,而会修改数组本身 
     列表元素合并成一个字符串  ", ".join(qux) # 返回字符串 'Tokyo, London, Beijing, Paris'

    元组类型

    与列表相似,元组也是一种序列,区别在于元组中不可以修改元素(不可以对元素赋新值,即不可以修改元素指向的地址,但是可以修改指向地址中的内容)。示例:

    >>> (1, 2, 3)
    (1, 2, 3)
    >>> 1, 2, 3         # 可以省略括号
    (1, 2, 3)
    >>> tuple([1, 2, 3]) # 列表转换成元组
    (1, 2, 3)
    >>> foo = (1, 2, 3)
    >>> foo[1] = 4       # 错误,不能对其元素赋新值
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    >>> bar = (1, [2, 3], 4)
    >>> bar[1][0] = 5    # ok,不可以修改其元素指向的地址,但是可以修改指向地址的内容
    >>> bar
    (1, [5, 3], 4)

    字典类型

    Python 中的字典类型数据,类似于 perl 中的 hash 数据、JavaScript 中的对象数据,它是包含一组“键/值对”的数据集合,示例:

    >>> jack = { 'name': 'Jack', 'age': 23 }
    >>> jack['name']
    'Jack'

    其中:“键”可以是任意不可变的数据类型,例如:整数、字符串、元组等(而不能是列表、字典等)。

    字典类型数据常用操作:

    操作示例
     获取键值对数目 len(jack) 
     访问某个键值对

     jack['age']     # 若是访问的键不存在,则会报错
     jack.get('gender') # 若是访问的键不存在,则返回None
     jack.get('gender', 'male') # 若是访问的键不存在,则使用默认值(第二个参数指定)

     删除某个键  del jack['age']
     遍历字典类型中的键值对  >>> for k in jack:
    ... v = jack[k]
    ... print(k + ": " + str(v))
     判断某个键是否存在于字典中  'gender' in jack # 返回 False
     获取“键”列表  jack.keys()
     获取“值”列表  jack.values()
    获取“键值对”列表  jack.items() 返回 [('age', 23), ('name', 'Jack')]

    序列:索引、切片

    常用序列操作函数:

    函数描述示例
     len()  求序列长度  len("foo")、len([1, 2, 3])
     list()   将序列转换为列表(返回列表)   list("Hello")、list((1, 2, 3))
     max()  求序列中的最大值  max(1, 2, 3) 返回 3
     min()  求序列中的最小值   min(1, 2, 3) 返回 1
     reversed()   返回一个反向迭代序列  >>> reversed([1, 2, 3])
    <listreverseiterator object at 0x0000000001E439E8>

    >>> for x in reversed([1, 2, 3]):
    ...    print x
     sorted()  返回一个有序列表  sorted([3, 2, 1]) 返回[1, 2, 3]
     tuple  将序列转换为元组(返回元组)  tuple([1, 2, 3]) 返回 (1, 2, 3)

    切片操作形式:

    a[start:stop]       # items start through stop-1,左开右闭
    a[start:]           # items start through the rest of the array
    a[:stop]            # items from the beginning through stop-1
    a[:]                # a copy of the whole array
    
    # 另外一种形式:
    a[start:stop:step]  # start through not past stop, by step
    a[::-1]             # all items in the array, reversed

    参考:https://stackoverflow.com/questions/509211/understanding-slice-notation

    数据类型转换

    待补充。

    bool()

    完。

  • 相关阅读:
    方法重载
    构造方法:(特殊方法,用来创建对象 没写就会默认有构造方法)
    java:第十二章
    java:第九章
    java:第十四章
    java:第十五章
    java:第十一章
    I/O小结
    java:第八章
    java:第六章
  • 原文地址:https://www.cnblogs.com/itwhite/p/12291087.html
Copyright © 2011-2022 走看看