python的数据类型

Python的数据类型


  • 字符串

    字符串操作:

      * 字符串的定义

        str = “abc.123_中文_utf-8” 

      * 字符串合并   

>>> str1="abc"   
>>> str2="utf-8" 
>>> num1=123           
>>> str1 + num1 + str2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
 
# 可以看到不同类型的数据是不能合并在一起的,我们把类型转换一下试试
>>> str1 + str(num1) + str2
'abc123utf-8'
 
# 合并成功 

      * 字符串去除空字符      

# 定义一个字符串,我们可以看到字符串左侧右侧分别有空字符
>>> raw_str = "  abc "
>>> print("|" + raw_str + "|")  
|  abc |

# 去除空字符
>>> remove_null_character = raw_str.strip()
>>> print("|" + remove_null_character + "|")
|abc|

# 去除字符串左侧空字符
>>> remove_left_null_character = raw_str.lstrip()
>>> print("|" + remove_left_null_character + "|")
|abc |

# 去除字符串右侧空字符
>>> remove_right_null_character = raw_str.rstrip()
>>> print("|" + remove_right_null_character + "|")
|  abc|

      * 字符串分割    

# 定义一个字符串,字符串中有几个空字符隔开了几个字段
>>> raw_str = "abc 123 xyz !@#"  
>>> print(raw_str)
abc 123 xyz !@#

# 用法: raw_str.split("分割的关键字")
>>> cut_str = raw_str.split(" ")
>>> print(cut_str)
['abc', '123', 'xyz', '!@#']

# 从左侧分割字符串用法: raw_str.split("分割的关键字",分割几个字段)
>>> cut_str_1_field = raw_str.split(" ",1)
>>> print(cut_str_1_field)
['abc', '123 xyz !@#']
>>> cut_str_2_field = raw_str.split(" ",2)                                                 
>>> print(cut_str_2_field)
['abc', '123', 'xyz !@#']
>>> 
#  从右侧分割字符串用法: raw_str.rsplit("分割的关键字",分割几个字段)
>>> cut_str_right_1_field = raw_str.rsplit(" ",1)   
>>> print(cut_str_right_1_field)
['abc 123 xyz', '!@#']

      * 字符串的索引、切片#定义一个7位的字符

>>> var_str = "abcdefg"

# 取字符串的第二个字符
>>> var_str[1]    
'b'
# 取字符串的第一个字符
>>> var_str[0]
'a'

# 取字符串的第2-4个字符
>>> var_str[1:4]
'bcd'

# 取字符串的第2-6个字符,每隔3个显示一个(步长为3)
>>> var_str[1:6:3] 
'be'

# 取数据库的第0-4个字符
>>> var_str[:4]
'abcd'

# 取数据库的第5个以后的所以字符
>>> var_str[4:]
'efg'

# 取数据库的所有字符,隔一个取一个
>>> var_str[::2]
'aceg'

  

      *取字符串长度

        

# 定义一个字符串
>>> var_str = "abcdefg"

# 获取字符串的长度
>>> len(var_str)
7

  

  

      


  • 数字

  1. 整形

    * 定义        

a=123
a=int(123)

    * 转换      

# 定义变量str值为字符串类型123
>>> str = str(123) 
>>> type(str)
<class 'str'>
# 定义变量num,将str的值强制转换为int类型
>>> num = int(str)
# 可以看到变量类型为int,值为123
>>> type(num)
<class 'int'>
>>> print(num)
123

 

  2. 浮点型

 

    * 定义                      

float = 123.4
float = float(123.4)

    * 转换        

# 定义变量i  赋值int类型123
>>> i = 123
>>> type(i)
<class 'int'>
# 强制转换为浮点型
>>> f = float(i)
>>> type(f)
<class 'float'>
>>> print(f)
123.0

  • 布尔型

    True 1 真
    False 0 假

           * 定义

               bool = True

               bool = False

            * 转换

      1. 数字转换,只有0是False,其他True
      2. 字符串, 只有""是False,其他True
      3. 待续...


  • 列表

    列表操作:

  • 创建        
list = [12,12.3,"abc",["a","b"],("x","y"),{"key":"value"},bool(True)]
  • 长度
>>> len(list)
7
  • 索引
>>> list = [12,12.3,"abc",["a","b"],("x","y"),{"key":"value"},bool(True)]
>>> list[2]
'abc'
>>> list[3]
['a', 'b']
  • 切片
# 定义一个列表list_1
>>> list_1 = ["aaa","bbb","ccc","ddd","eee"]
# 用法与字符串切片类似,具体原理见下图
>>> list_1[2:0:-1]
['ccc', 'bbb']

  • 追加
# 定义一个列表list_1
>>> list_1 = ["aaa","bbb","ccc","ddd","eee"]
# 在列表list_1中追加一个新元素
>>> list.append("new_element")
>>> print(list_1)
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'new_element']

  • 插入
# 有一个列表list_1如下:
>>> print(list_1)
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'new_element']
# 在列表的第一个位置插入一个新元素
>>> list_1.insert(1,"insert_element")
>>> print(list_1)
['aaa', 'insert_element', 'bbb', 'ccc', 'ddd', 'eee', 'new_element']
>>> 
  • 删除
# 有这样一个列表list_1如下:
>>> print(list_1)
['aaa', 'new_element', 'bbb', 'ccc', 'ddd', 'eee', 'new_element']
# 删除为“new_element”的元素
>>> list_1.remove("new_element")
>>> print(list_1)
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'new_element']
# 可以看到remove只会从左到右查找到第一个元素并删除,后面的不做任何处理
  • 更新元素
# 有这样一个列表list_1如下
>>> print(list_1)
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'new_element']
# 修改列表的最后一个(list_1[-1])元素为fff
>>> list_1[-1] = "fff"
>>> print(list_1)
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']
  • 判断列表中是否存在
# 有这样一个列表list-1如下:
>>> print(list_1)
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']
# 判断列表list_1里面是否包含“ddd”元素
>>> if "ddd" in list_1:
...     print('element "ddd" in list list_1')
... else:
...     print('There is no element "ddd" in list list_1')
... 
element "ddd" in list list_1
  • 循环
# 有这样一个列表list_1如下
>>> print(list_1)
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']
# 下面我们用循环遍历这个列表,并打印结果
>>> for element in list_1:
...     print("list_1 have %s" %element)
... 
# 输出如下
list_1 have aaa
list_1 have bbb
list_1 have ccc
list_1 have ddd
list_1 have eee
list_1 have fff

 


  • 元组

    - 元组创建

# 方法一:
    >>> tup = (12,12.3,"abc",["a","b"],("x","y"),{"key":"value"},bool(True))
    >>> type(tup)
    <class 'tuple'>

# 方法二:
    >>> tup = tuple(( 12,12.3,"abc",["a","b"],("x","y"),{"key":"value"},bool(True)
 ))
    >>> type(tup)
    <class 'tuple'>

# 方法三:
    >>> tup = 12,12.3,"abc",["a","b"],("x","y"),{"key":"value"},bool(True)
    >>> type(tup)
    <class 'tuple'>

    - 元组操作

      • 索引
      • 切片
      • 循环
      • 长度
      • 包含

      * 以上操作与列表的操作相同,这里不再单独阐述,值得注意的是元组的一些特性,如下:

  • 元组的特性(不可修改性)
# 创建元组
>>> tup = (12,12.3,"abc",["a","b"],("x","y"),{"key":"value"},bool(True))
# 尝试修改元组中的数据,可以看到元组中的元素是不允许修改的
>>> tup[0] = "t"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

# 元组是不可修改的,不止元素,元组本身也是不可修改的

 


  • 字典

  - 字典的创建

# 创建字典
>>> dict = {"key":"value","key1":"value","key2":"value1","key3":"value2"}
# 查看类型
>>> type(dict)
<class 'dict'>

# key是有唯一性的 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行

  - 字典操作:

    -- 索引

# 创建字典
>>> dict = {"key":"value","key-1":"value-1","key-2":"value-2","key-3":"value-3"}
# 查询字典中key "key-1" 对应的值
>>> dict["key-1"]
'value-1'

    -- 修改

# 定义一个字典
>>> dict = {"key":"value","key-1":"value-1","key-2":"value-2","key-3":"value-3"}
# key的值为value
>>> dict["key"]
'value'

# 修改键key的值为new_value
>>> dict["key"] = "new_value"
# 字典key对应值已经修改
>>> dict
{'key': 'new_value', 'key-1': 'value-1', 'key-2': 'value-2', 'key-3': 'value-3'}

    -- 增加

# 字典如下
{'key': 'new_value', 'key-1': 'value-1', 'key-2': 'value-2', 'key-3': 'value-3'}
# 添加一个新元素new_key:new_key_value
>>> dict["new_key"] = "new_key_value"
# new_key已经添加到字典
>>> dict
{'key': 'new_value', 'key-1': 'value-1', 'key-2': 'value-2', 'key-3': 'value-3', 'new_key': 'new_key_value'}

    -- 删除

# 创建一个字典d
>>> d = {"key":"value","key-1":"value-1","key-2":"value-2","key-3":"value-3"}

# 删除字典里指定元素
>>> del d["key-2"]
>>> d
{'key': 'value', 'key-1': 'value-1', 'key-3': 'value-3'}

# 清空字典所有元素
>>> d.clear()
>>> d
{}

# 删除字典
>>> del d
>>> d
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined

    -- 循环

# 定义字典d
>>> d = {"key":"value","key-1":"value-1","key-2":"value-2","key-3":"value-3"}

# 循环遍历字典的key
>>> for key in d.keys():
...     print(key)
... 
key
key-1
key-2
key-3

# 循环遍历字典的value
>>> for value in d.values():
...     print(value)
... 
value
value-1
value-2
value-3

# 循环遍历字典的key和value
>>> for key,value in d.items():
...     print("key: %s,value: %s" %(key,value))
... 
key: key,value: value
key: key-1,value: value-1
key: key-2,value: value-2
key: key-3,value: value-3

# dict.items()是以元组形式返回的
>>> for item in d.items():
...     print(item)
... 
('key', 'value')
('key-1', 'value-1')
('key-2', 'value-2')
('key-3', 'value-3')

    -- 长度

# 创建字典d
>>> d = {"key":"value","key-1":"value-1","key-2":"value-2","key-3":"value-3"}

# 查看字典长度
>>> len(d)
4

  

 


  • 查询数据类型

    type()查询字符类型:

           type()用法:

               type(variable)

# 有一个列表list如下:
>>> print(list)
[12, 12.3, 'abc', ['a', 'b'], ('x', 'y'), {'key': 'value'}, True, 'new_element']
# 定义一个计数器记录元素位置
>>> i = 0

# 下面我们来遍历这个列表,并查询每个元素的数据类型
>>> for element in list:
...     i += 1
...     print("列表的第 %d 个元素 %s ,数据类型为 %s" %(i,element,type(element)))
... 
# 结果如下:
列表的第 1 个元素 12 ,数据类型为 <class 'int'>
列表的第 2 个元素 12.3 ,数据类型为 <class 'float'>
列表的第 3 个元素 abc ,数据类型为 <class 'str'>
列表的第 4 个元素 ['a', 'b'] ,数据类型为 <class 'list'>
列表的第 5 个元素 ('x', 'y') ,数据类型为 <class 'tuple'>
列表的第 6 个元素 {'key': 'value'} ,数据类型为 <class 'dict'>
列表的第 7 个元素 True ,数据类型为 <class 'bool'>
列表的第 8 个元素 new_element ,数据类型为 <class 'str'>
posted @ 2017-05-02 16:46  lfatty  阅读(163)  评论(0编辑  收藏  举报