码迷,mamicode.com
首页 > 编程语言 > 详细

Python3学习笔记(二)--数据类型:字符串、列表、元组、数字、字典、集合

时间:2018-02-12 13:47:38      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:std   实例   元组   技术分享   内存   代码   float   取出   定义   

变量赋值

Python 中的变量赋值不需要类型声明。

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

Python中允许为多个变量同时赋值

a = b = c =1

a, b, c = 1, b, 1.1   # 将1, ‘b‘分别赋值给a、b,1.1赋值给c

标准数据类型

Python有五个标准的数据类型

  • String(字符串)
  • List(列表)
  • Numbers(数字)
  • Tuple(元组)
  • Dictionary(字典)

Python字符串

String(字符串)是Python中最忙,被操作最多的数据类型,一般形式如下:

a = "123456789a~zA~z...."

字符串可以被切割,因为字符串是不可变的,切割实质上是生成了新的字符串,

示例:

a = you are the sunshine!

print(a)  # 输出完整字符串
print(a[0])  # 输出字符串中的第一个字符
print(a[2:5])  # 输出字符串中第三个至第五个之间的字符串
print(a[2:])  # 输出从第三个字符开始的字符串
print(a * 2)  # 输出字符串两次
print(a+"TEST")   # 输出连接的字符串

以上的输出结果如下:

you are the sunshine!
y
u a
u are the sunshine!
you are the sunshine!you are the sunshine!
you are the sunshine!TEST

Python列表

List(列表) 是 Python 中除字符串外使用最频繁的数据类型,是一个可变的有序表

它的元素可以是五个标准的数据类型中的任何一个,也就是说列表中可以嵌套列表。

列表常用的操作示例:

>>> a = [1, 2.1, a, [b]]  # 定义一个列表
>>> a.append(c)   # 往列表里面添加一个字符串c
>>> print(a)
[1, 2.1, a, [b], c]
>>> a.insert(1, d)  # 往列表里面指定的位置插入字符串d
>>> print(a)
[1, d, 2.1, a, [b], c]
>>> a.pop()  # 删除列表最后一个元素
c
>>> print(a)
[1, d, 2.1, a, [b]]
>>> a.pop(1)  # 指定删除列表的第二个元素
d
>>> print(a)
[1, 2.1, a, [b]]
>>> a[1] = e  # 将列表的第二个元素替换为字符串e
>>> print(a)
[1, e, a, [b]]

Python元组

元组类似于列表,但是不能二次赋值,相当于只读列表;但是这个也不是绝对的

元组常用操作示例:

>>> a = ("a",)  # 定义一个元素的元组,必须加逗号以区别于普通的括号
>>> b = (1, 1.2, a) # 定义一个元组
>>> b[1]  # 取出元组的第二个数据
1.2
>>> b[1:3]  # 取出元组的第二到三个数据
(1.2, a)
>>> a = (a,b,[A,B])  # 定义一个‘可变的’元组
>>> a[2][1] = C
>>> a
(a, b, [A, C])

上面的示例中,表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。

tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。

即指向‘a‘,就不能改成指向‘b‘,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

Python数字

Python支持四种不同的数字类型:

  • int(有符号整型)
  • long(长整型[也可以代表八进制和十六进制])
  • float(浮点型)
  • complex(复数)

一些数值类型的实例:

int longfloatcomplex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3e+18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2E-12 4.53e-7j

Python 字典

dict全称dictionary,在其他语言中也称为map,是除列表以外python之中最灵活的内置数据结构类型。

列表是有序的对象集合,字典是无序的对象集合。

常用操作示例:

dict = {}  # 定义一个空字典
dict[tips] = "you are the sunshine!"  # 给空字典添加一个key为tips,value值为"you are the sunshine!"的键值对
testdict = {name: bingo, socre: 99}

print(dict[tips])  # 输出键为‘tips‘ 的值
print(testdict)  # 输出完整的字典
print(testdict.keys())  # 输出所有键
print(testdict.values() )  # 输出所有值

输出结果:

you are the sunshine!
{name: bingo, socre: 99}
dict_keys([name, socre])
dict_values([bingo, 99])

dict获取值时,如果值不存在就会报错,有两种方法避免:

通过in判断key是否存在

>>> cin dict
False

通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

>>> dict.get(tipsssssss‘,-1)
-1
>>> dict.get(tips‘,-1)
1

其他操作:

testdict.pop(name)   # 删除testdict中key为name的元素
print(testdict)

dict.update(testdict)  # 合并两个字典的值
print(dict)

list和dict对比,dict是用空间来换取时间的一种方法。

dict和list比较,dict有以下几个特点:

  • 查找和插入的速度极快,不会随着key的增加而变慢;
  • 需要占用大量的内存,内存浪费多。

而list相反:

  • 查找和插入的时间随着元素的增加而增加;
  • 占用空间小,浪费内存很少。

Python 集合

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

 

注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。。

重复元素在set中自动被过滤:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}

 

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

技术分享图片
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
技术分享图片

 

通过remove(key)方法可以删除元素:

>>> s.remove(4)
>>> s
{1, 2, 3}

 

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

技术分享图片
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
技术分享图片

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。

Python3学习笔记(二)--数据类型:字符串、列表、元组、数字、字典、集合

标签:std   实例   元组   技术分享   内存   代码   float   取出   定义   

原文地址:https://www.cnblogs.com/Detector/p/8444119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!