Python学习笔记(一) 数据类型

数据类型

本来以为数据类型是最最简单的知识,可是发现网上说法比较乱,我就用java的思维去理解吧。╮(╯▽╰)╭

一.基本数据类型

1.Numbers(数字)

  • 整数
  • 浮点数
  • 复数

2.String(字符串)

字符串可以单引号如‘abc’或者双引号“abc”,转译字符是\
和Java一样,说String类型是不可变的,这个很重要

a = "hello"
b = " world"

print("a + b = {}".format(a + b))
#print("a + 2 = {}".format(a + 2))#这个会报TypeError: Can't convert 'int' object to str implicitly
print("a * 2 = {}".format(a * 2))
print("a[0] = {}".format(a[0]))
print("a[-1] = {}".format(a[-1]))
print("a[1:3] = {}".format(a[1:3]))
print("'a' in a = {}".format('a' in a))
print("'h' in a = {}".format('h' in a))
print("'he' in a = {}".format('he' in a))
a + b = hello world
a * 2 = hellohello
a[0] = h
a[-1] = o
a[1:3] = el
'a' in a = False
'h' in a = True
'he' in a = True

3.bool(布尔值)

一个布尔值只有True、False两种值,要么是True,要么是False(请注意大小写

其他类型值转换 bool 值时除了 ”、”“、”””、”“”“”“、0、()、[]、{}、None、0.0、0L、0.0+0.0j、False 为 False 外,其他都为 True 。

bool(-1) #返回True
bool('') #返回False

在数值上下文环境中,True 被当作 1,False 被当作 0

Ture + 3 #4
False + 3 #3

布尔值可以用and、or和not运算。

yes = True
no = False
print("yes and no is {}".format(yes and no))
print("yes or no is {}".format(yes or no))
print("not no is {}".format(not no))

运行结果如下

yes and no is False
yes or no is True
not no is True

4.None(空值)

空值是Python里一个特殊的值,用None表示。

二.集合数据类型

其实也不能叫集合数据类型,Python说的集合是set类型。哎,反正就这么理解吧。╮(╯▽╰)╭

1.List(可变有序)

list是有序的集合,这个和java的list很像,是有序的。它居然用中括号[ ],是不是很像数组

names = ["冬冬", "pigg", "米可"]

list的索引是从0开始的,names[0]就是”冬冬”了。
神奇的是,索引可以是负数,-1指的是倒数一个元素,names[-1]就是”米可”,names[-3]就是”冬冬”。
当然索引不可以越界,否则有异常。

扫描二维码关注公众号,回复: 3987587 查看本文章
names = ["冬冬", "pigg", "米可"]

#用len()获取长度
print("list长度是{}".format(len(names)))

#插入元素
names.insert(2, "天使")
print("插入元素, 最新list内容如下:")
print(names)


#在后面添加元素
names.append("蓝波")
print("\n在后面添加元素,最新list内容如下:")
print(names)

#删除末尾元素
names.pop()
print("\n删除末尾元素,最新list内容如下:")
print(names)
运行结果如下:
list长度是3
插入元素, 最新list内容如下:
['冬冬', 'pigg', '天使', '米可']

在后面添加元素,最新list内容如下:
['冬冬', 'pigg', '天使', '米可', '蓝波']

删除末尾元素,最新list内容如下:
['冬冬', 'pigg', '天使', '米可']

2.tuple(不可变有序)

tuple叫元组,是不可变的,所以没有append(),insert(),pop()这些方法。
tuple的不可变是指每个元素的指向不可变,如果某个元素指向一个list,而这个list的值变了,是可以的。

names = ('A', 'B', ['C', 'D'])
names[2][0] = 'X'
names[2][1] = 'Y'
print(names)
运行结果如下:
('A', 'B', ['X', 'Y'])

3.dict(字典)

dict比较像java里的map,使用键-值(key-value)存储
和list比较,dict有以下几个特点:

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

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。
ageDic = {"张三": 10, "李四": 29, "王五": 36}
print("ageDic['王五']={}".format(ageDic['王五']))
print("ageDic.get('王五')={}".format(ageDic.get('王五')))

ageDic['王五'] = 29
print("修改后,ageDic['王五']={}".format(ageDic['王五']))

ifExist = '王八' in ageDic
print("王八在字典里?{}".format(ifExist))

ageDic.pop('王五')
print("删除王五后字典={}".format(ageDic))
运行结果如下:
ageDic['王五']=36
ageDic.get('王五')=36
修改后,ageDic['王五']=29
王八在字典里?False
删除王五后字典={'李四': 29, '张三': 10}

4.set(不重复且无序)

Python的set和java的set很类似,是一组不能重复的key

#要创建一个set,需要提供一个list作为输入集合
#复元素在set中自动被过滤
s = set([1, 2, 3, 3])
print(s)

#通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
s.add(1)
s.add(4)
print(s)

#通过remove(key)方法可以删除元素
s.remove(4)

#两个set可以做数学意义上的交集、并集等操作
s2 = set([2, 3, 4])
print("s & s2 = {}".format(s & s2))
print("s | s2 = {}".format(s | s2))
运行结果如下:
{1, 2, 3}
{1, 2, 3, 4}
s & s2 = {2, 3}
s | s2 = {1, 2, 3, 4}

猜你喜欢

转载自blog.csdn.net/winterking3/article/details/81330007