Python—数据类型
Posted wf-aiyouwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python—数据类型相关的知识,希望对你有一定的参考价值。
#### 数组和列表 list###
数组:存储同一种数据类型的集合 如scores = [12,13,14]
列表:(打了激素的数组):可以存储任意数据类型的集合
ctrl+Q 查看命令的使用方法
1.列表的创建
示例:
name1 = \'bob\'
name2 = \'lily\'
name3 = [\'ni\',\'hao\',\'wf\']
type(name3)
list
2.列表的特性:
示例:
service = [\'http\', \'ssh\', \'ftp\']
# 索引
print service[0]
print service[:]
print service[:-1]
# 切片
print service[::-1]
# 重复
print service * 3
# 连接
service1 = [\'firewalld\', \'mysql\']
print service + service1
# 成员操作符
print \'firewalld\' in service
print \'firewalld\' in service1
# for循环遍历
for i in service:
print i,
for j in service[::-1]:
print j
# 列表里的嵌套列表
service2 = [[\'nihao\',12],[\'wangfang\',18],[\'hehe\',20]]
#索引
print service2[1]
print service2[0]
print service2[::-1]
#切片
print service2[1][0]
print service2[:-1][0]
3.列表的增加:
示例:
service = [\'http\', \'ssh\', \'ftp\']
#1.直接在后面追加(只能追加列表类型的)
print service + [\'firewalld\']
#2.append:追加。追加一个元素到列表中,默认追加到最后
service.append(\'firewalld\')
print service
#3.extend:拉伸,追加多个元素到列表中
service.extend([\'my\', \'name\'])
print service
#4.insert:在指定位置插入元素
service.insert(1, \'haha\')
print service
4.列表的删除:
示例:
service = [\'http\', \'ssh\', \'ftp\']
#1.如果pop()不传递值的时候,默认(显示)弹出最后一个元素
print service.pop()
#2pop()也可以传递索引值
print service.pop(0)
#3.remove:删除指定的元素
service.remove(\'ssh\')
print service
#4.del关键字 从内存中将整个信息都删除
print service
del service
print service
5.列表的修改:
示例:
service = [\'http\', \'ssh\', \'ftp\']
#1.通过索引,重新赋值(给索引值为0的重新赋值为\'haha\')
service[0] = \'haha\'
print service
#2.通过切片,大范围的重新赋值
service[:2] = [\'nnn\',\'mmm\']
print service
print service[:2] ##显示前两个
6.列表的查看:
示例:
service = [\'http\', \'ssh\', \'ftp\',\'ftp\']
#查看列表中的元素出现的次数
print service.count(\'http\')
print service.count(\'ftp\')
#查看指定元素的索引值
print service.index(\'http\')
7.列表的排序:
示例:
service = [\'http\', \'ssh\', \'ftp\',\'ftp\']
#1.按照ASCII码排序的
service.sort()
print service
#2.默认的是按照升序排序的,更改默认值
service.sort(reverse=True)
print service
service1 = [\'Http\', \'anny\',\'ssh\', \'ftp\',\'Alice\']
#1.默认的排序是大写的ASCII码值小,小写的值大
service1.sort()
print service1
#2.不区分大小写的排序
service1.sort(key=str.lower)
print service1
service1 .sort(key=str.upper)
print service1
#给一个区间,然后排序,默认的是按顺序排列
import random
li = list(range(10))
print li
#将li这个数列打乱输出
random.shuffle(li)
print li
8.练习题
(1)学生管理系统
-系统里面有用户 用户有密码
users = [\'root\', \'westos\']
passwd = [\'123\', \'456\']
-用户登陆(判断用户登陆是否成功)
1)判断用户是否存在
2)如果存在:
判断用户密码是否正确:先找出索引
根据psswd【索引值】
如果正确:登陆成功,退出循环
如果错误:重新登陆(三次机会)
3)不存在
重新登陆(三次机会)
代码:
users = [\'root\', \'westos\']
passwd = [\'123\', \'456\']
num = 1
count = 0
while num <= 3:
user = raw_input(\'请输入用户名:\')
a = raw_input(\'请输入密码:\')
num += 1
if user in users:
ps = passwd[users.index(user)]
if ps == a:
print \'登陆成功!\'
break
else:
count += 1
print \'请重新登陆,还剩余%d次机会!\' %(3-count)
else:
print \'三次机会已用完!\'
(2)后台管理
-后台管理员只有一个用户:admin 密码:admin
-当管理员登陆成功后,才可以管理用户信息
-管理用户信息包含
添加用户信息
删除用户信息
查看用户信息
退出
代码:
users = [\'root\', \'westos\']
passwd = [\'123\', \'456\']
print \'管理员登陆\'.center(50, \'*\')
name = raw_input(\'请输入用户名:\')
ps = raw_input(\'请输入密码:\')
if name == \'admin\' and ps == \'admin\':
print \'管理员登陆成功!\'
print \'用户信息管理\'.center(50, \'*\')
while True:
print """
1.添加用户信息
2.删除用户信息
3.查看用户信息
4.退出
"""
choice = raw_input(\'请输入你的操作:\')
if choice == \'1\':
print \'添加用户信息\'.center(50, \'*\')
addname = raw_input(\'输入添加用户名:\')
if addname in users:
print \'用户%s已经存在!\' % addname
else:
addps = raw_input(\'输入添加用户密码:\')
users.append(addname)
passwd.append(addps)
print \'添加用户%s成功!\' % addname
elif choice == \'2\':
print \'用户信息删除\'.center(50, \'*\')
print users
deluser = raw_input(\'请输入想要删除的用户:\')
index = users.index(deluser)
users.remove(deluser)
passwd.pop(index)
print \'用户已删除\'
elif choice == \'3\':
print \'用户信息\'.center(50, \'*\')
print \'\\t用户名\\t密码\'
print \'\\t%s\\t%s\' % (users,passwd)
elif choice == \'4\':
print \'Bye Bye!\'
exit
break
else:
print \'请输入正确的选择!\'
else:
print \'管理员登陆失败!\'
#### 元组 tuple ###
1.元组的创建
元组(tuple):带了紧箍咒的列表
元组本身是不可变数据类型,没有增删改查(没有.append等功能)
元组内可以存储任意数据类型
示例:
t = (1,2,3,4.0,\'star\')
print t,type(t)
#元组里面包含可变数据类型,可以间接修改元组的内容
t1 = ([1,2,3],4)
t1[0].append(4)
print t1
#元组如果只有一个元素的时候,后面一定要加逗号,否则数据类型不确定
t1 = (\'hello\',)
t2 = (1,)
print type(t1),type(t2)
2.元组的特性
name = (\'wf\',\'nihao\',\'fentiao\')
#索引 切片
print name[0]
print name[:]
print name[-1]
print name[:-1]
print name[1:]
print name[::-1]
#重复
print name * 3
#连接
print name + (\'rourou\',\'doubao\')
#成员操作符
print \'rourou\' in name
print \'wf\' in name
3.元组的应用场景
# 1.变量交换数值
a = 1
b = 2
b, a = a, b
# 相当于先把a,b封装成了一个元组(a,b)=(1,2)
# 下面的交换数值,就想相当于
# b = (1,2)[0] a = (1,2)[1]
print a, b
#2.打印变量值
name = \'westos\'
age = 10
print \'name:%s,age:%d\' % (name, age)
###相当于
t = (name, age)
print \'name:%s,age:%d\' % t
#3.元组的赋值:有多少元素,就用多少个变量
t1 = (\'westos\', \'18\', \'student\')
name1,age1,work = t1
print name1, age1, work
scores = (100,99,88,98)
scores1 = list(scores)
scores1.sort()
print scores1
#相当于 (也可以倒叙排序,和上面的一样 reverse=True)
scores = sorted(scores) ##这个适用于所有数据类型
print scores
### 集合 set ###
1.集合(集合内的元素不能重复)
不支持索引,切片,连接,重复;但是支持for循环操作和成员操作符
示例:
s = {1,2,3,1,2,3,4,5}
print s,type(s)
#如何定义一个空集合
#(列表和元组直接不输入数值就可以定义一个空的)
#但是集合不行
比如:
s = {}
print s ## 输出的s的类型是字典
s1 = set([])
print type(s1)
#去掉列表当中的重复并输出
s2 = [1,2,3,1,2,3,4,5]
s3 = list(set(s2))
print s3
###相当于 先把列表s2转换成集合类型(因为集合不能重复)再把结果转换成列表的形式输出
print list(set(s2))
2.增删
示例:
s = {6,7,8,1,2,3}
#增加
s.add(10)
s.add(9)
print s
#增加多个元素
s.update({4,5})
print s
#删除元素,用pop()默认删除和列表的默认删除不一样
#列表是默认删除最后一个,集合是默认删除第一个
s.pop()
print s
#删除指定的元素
s.remove(8)
print s
3.交集,并集,差集
示例:
s1 = {1,2,3}
s2 = {2,3,4}
#并集
print \'并集:\',s1.union(s2)
print \'并集:\',s1 | s2
#交集
print \'交集:\',s1.intersection(s2)
print \'交集:\',s1 & s2
#差集
#s1与s2相比,比s2多了什么 s1-s2
print \'差集:\',s1.difference(s2) #s1-(s1&s2) 结果:[1]
#s2与s1相比,比s1多了什么 s2-s1
print \'差集:\',s2.difference(s1) #s2-(s1&s2) 结果:[4]
#对等差分:并集-交集
print \'对等差分:\',s1.symmetric_difference(s2)
print \'对等差分:\',s1^s2 ##结果:[1,4]
#s1是否为s2的子集
print s1.issubset(s2)
#两个集合是不是相交
print s1.isdisjoint(s2)
练习题:
用计算机生成N个1~1000之间的随机整数,N是用户输入的,对于其中重复的数字,只保留一个,把其余的相同的数字去掉,不同的数对应着不同的学生的学号,数字从小到大排序,按照排好的顺序去找同学作调查,完成去重与排序的工作
#### 字典 dict ###
字典的定义:字典是一个无序的数据集合,使用print输出字典的时候,通常输出的顺序和定义的顺序不太一致
message = {
\'name\' : \'tom\'
\'age\' : \'18\'
\'height\' : \'1.80\'
\'weight\' : \'75.5\'
}
print message
1.定义一个字典
s = {}
print type(s) ##输出的结果是: dict 是一个空字典类型的
d = dirct()
print type(d) ##输出的结果是: dict 是一个空字典类型的
2.字典的特性
#成员操作符(默认判断key值是否存在)
d = dict(a=1,b=2)
print \'a\' in d ## True
print 1 in d ## False
#for循环(默认循环遍历字典的key值)
for i in d:
print i, ##a b
3.字典的增加
d = dict(a=1,b=2)
#增或更改key-value值
d[\'g\'] = 10
d[\'a\'] = 20
print d ##{\'a\':20,\'b\':2,\'g\':10}
注意:如果key值存在的时候,更新value值;如果key值不存在,添加key-value值
#增加多个key-value值
d.update({\'a\':4,\'f\':1})
print d
d.setdefault(\'a\':5)
print d
注意:setdefault 如果key值已经存在,不做修改;如果key值不存在,添加key-value值
4.字典的删除
d = dict(a=1,b=2,c=3)
#pop():弹出指定的key-value值 括号内必须填key值,否则会报错
d.pop(\'a\')
print d
d.popitem() ##这个是默认弹出第一对key-value值
print d
del d[\'a\'] ##也可以执行删除a这对key-value值
print d
5.字典的修改与查看
service = {
\'http\':80,
\'mysql\':3306
}
#查看字典里面所有的key值
print service.keys() ##[\'http\',\'mysql\']
#查看字典里所有的value值
print service.values() ##[80,3306]
#查看字典里面所有的key-value值
print service.items() ##[\'http\':80,\'mysql\':3306]
#遍历
for k,v in service.items():
print k,\'--->\',v
for k in service:
print k,service[k]
if \'http\' in service:
print service[\'http\']
else:
print \'key not exist!\'
get方法:获取指定的key对应的value值
如果key值存在,返回对应的value值;
如果key值不存杂,默认返回None。如果需要指定返回值,传值即可
print service.get(\'https\')
print service.get(\'https\',\'key not exist!\')
6.练习题:
(1)重复的单词:此处认为单词之间以空格为分隔符,并且不包含,和.
-用户输入一句英文句子
-打印出每个单词及其重复的次数
-示例:
-“hello java hello python”
-hello 2
-java 1
-python 1
c
(2)重复数字统计:
-随机生成1000个整数
-数字的范围[20,100]
-升序输出所有不同的数字及其每个数字重复的次数
以上是关于Python—数据类型的主要内容,如果未能解决你的问题,请参考以下文章