python数据类型

                                #python数据类型

python的数据类型: list,dict,tuple,set,String,Number,Boolean,None

其中可变的的有:list,dict

不可变的:其他都不可变

字符串的重要性

操作文本或者数据可是件大事。如果不相信,就仔细看看当今计算机都在做什么工作:
文字处理、网页表单的填写、来自数据库
转储的信息流、股票报价、新闻等等,而且这个清单还会不断增长。

什么是字符串?

是由数字、字母、下划线组成的一串文字。它是编程语言中表示文本的数据类型。
简单的说就是用单引号或者双引号括起来的文本。

字符串的处理

创建字符串

str1 = "hi,Look at this girl, she's really beautiful"
print(str1)

字符串的连接

str2 = "i love her"
str3 = str1 + str2
print("str3=",str3)

字符串的复制

str4 = str2 * 3
print(str4)

字符串的长度

print(len("beautiful"))

count(str[,start][,end])

返回字符串中某个单词出现的次数,可以指定一个范围,默认从头到尾
str5 = "hi,Look at this girl, she's really beautiful"
print(str5.count("girl", 16,len(str5) ))

find(str[, start][,end])

从左向右检测str字符串是否包含在字符串中,可以指定范围,默认从头到尾。得到的是第一次出现的开始下标,没有返回-1
print(str5.find("girl"))
print(str5.find("one"))

split(str="", num)

以str为分隔符截取字符串,指定num,则仅截取num个字符串
str6 = "hi,Look at this girl, she's really beautiful"
list7 = str6.split(" ")
print(list7)

join(seq) 以指定的字符串分隔符,将seq中的所有元素组合成一个字符串

print(list7)
str8 = "#".join(list7)
str9 = " ".join(list7)
print(str8)
print(str9)

list列表

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型

list10 = [1,2,3,4,5,]
print(list10)

list11 = [1,2,3,"hello",1,2,3]
print(list11)

列表元素的访问,注意不要越界了(下标超出可表示的范围)

list12 = [1,2,3,"hello",1,2,3]
print(list12[3])

print(list13[7])

列表的替换

list12[3] = "beautiful girl"
print(list12)

列表的组合和string一样

list13 = [1,2,3]
list14 = [4,5,6]
list15 = list13 + list14
print(list15)

列表的重复也和string一样

list16 = list13 * 3
print(list16)

判断元素是否在列表中,在返回True,不在False

list17 = [1,2,3,"hello",1,2,3]
print("hello" in list17)

列表的截取,如果超出边界,没事

list18 = [1,2,3,"hello",1,2,3]
print(list18[3:6])

二维列表

list19 = [[1,2],[3,4],[5,6]]
print(list19[1][1])

列表的append方法,在末尾添加元素

list20 = [1,2,3]
list20.append(1)
print(list20)

list21 = [1,2,3,4]
list21.append([4,5])
print(list21)

list22 = [1,2,3]
list22.extend([4,5,6])
print(list22)

列表的insert方法

list23 = [1,2,"hello",1,2]
list23.insert(3,"girl")
print(list23)

list24 = [1,2,"hello",1,2]
list24.insert(3,[3,4])
print(list24)

列表的删除

第一种:pop删除

pop(x=list[-1])
移除列表中指定下标处的元素(默认移除最后一个元素),并返回删除的数据
list25 = [1,2,3,4,5]
list25.pop()
list25.pop(2)
print(list25.pop(1))
print(list25)

第二种:remove删除

remove 移除列表中的某个元素第一个匹配的结果
list26 = [1,2,3,4,5,5,5]
list26.remove(5)
print(list26)

第三种:del删除,根据索引,删除元素

list27 = [1,2,3,4,5]
del(list27[4])
print(list27)

第四种:clear()方法,删除整个列表中的元素

list28 = [1,2,3,4,5]
list28.clear()
print(list28)

从列表中找出某个值第一个匹配的索引值

list29 = [1,2,3,4,5,6,7,8,9]
index29 = list29.index(3)
print(index29)

列表中元素个数

list30 = [1,2,3,4,5]
print(len(list30))

列表的Max、min方法

list31 = [1,2,3,4,5]
print(max(list31))
print(min(list31))

列表的count方法

list32 = [1,1,1,2,3,4,5]
print(list32.count(1))

列表的排序

list33 = [1,3,5,7,2,4,6,8,1,1.1]
list33.sort()
print(list33)

list34 = [1,3,5,7,2,4,6,8,1,1.1]
list34.reverse()
print(list34)

浅拷贝和深拷贝

1,深浅拷贝都是对源对象的复制,占用不同的内存空间。
2,不可变类型的对象,对于深浅拷贝毫无影响,最终的地址值和值都是相等的。
3,可变类型:
=浅拷贝: 值相等,地址相等
copy浅拷贝:值相等,地址不相等
deepcopy深拷贝:值相等,地址不相等

浅拷贝: = 的浅拷贝

list35 = [1,2,3,4,5]
list36 = list35
print(list35)
print(list36)
print(id(list35))
print(id(list36))

copy的浅拷贝

list37 = [1,2,3,4,5]
list38 = list37.copy()
print(list37)
print(list38)
print(id(list37))
print(id(list38))

深度拷贝

import copy
list39 = [1,2,3,4,5]
list40 = copy.deepcopy(list39)
print(list39)
print(list40)
print(id(list39))
print(id(list40))

浅拷贝和深拷贝的区别:

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝了父对象及其子对象。
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用

a.append(5)

c = copy.copy(a) #对象拷贝,浅拷贝
d = copy.deepcopy(a) #对象拷贝,深拷贝
a.append(5) #修改对象a
a[4].append('c') #修改对象a中的['a', 'b']数组对象

print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

列表的转化

元组转列表

list41 = list((1,2,3,4,5))
print(list41)

列表转元组

tuple42 = tuple([1,2,3,4,5])
print(tuple42)

列表的去重

list43 = [1,1,2,3,4,5]
set(list43)

for i in list43:
print(i)

dict字典

字典是另一种可变容器模型。
概述:
使用键-值(key-value)存储,中间用冒号:分割,具有极快的查找速度

注意:字典是无序的

key的特性:

1、字典中的key必须唯一
2、key必须是不可变对象
3、字符串、整数等都是不可变的,可以作为key
4、list是可变的,不能作为key

dict44 = {"Bili":"北京","twodog":"shenzhen"}
print(dict44)

元素的访问

获取:字典名[key]
print(dict44["Bili"])
print(dict44.get("Bili"))

key_name = dict44.get("twodog")
if key_name == None:
print("没有")
else:
print("有")

补充,拓展

python中的命名规范

不要用系统的关键词

import keyword
print(keyword.kwlist)

模块

模块尽量使用小写命名,首字母保持小写,尽量不要用下划线
import copy

类名

ThisClass

函数

函数名一律小写,如果有多个单词,用下划线隔开
def post():
pass

变量名

变量名尽量小写, 如有多个单词,用下划线隔开
django中manage.py文件中
if name == 'main':
count = 0
student_name = "twodog"

当.py文件被直接运行时,if name == 'main'之下的代码块将被运行;
当.py文件以模块形式被导入时,if name == 'main'之下的代码块不被运行。

对于很多编程语言来说,程序都必须要有一个入口,比如C,C++,以及完全面向对象的编程语言Java,C等。
如果你接触过这些语言,对于程序入口这个概念应该很好理解,C,C++都需要有一个main函数作为程序的入口,
也就是程序的运行会从main函数开始。同样,Java,C必须要有一个包含Main方法的主类,作为程序入口。
而Python则不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。
也就是从脚本第一行开始运行,没有统一的入口。

一个Python源码文件(.py)除了可以被直接运行外,还可以作为模块(也就是库),被其他.py文件导入。
不管是直接运行还是被导入,.py文件的最顶层代码都会被运行(Python用缩进来区分代码层次),
而当一个.py文件作为模块被导入时,我们可能不希望一部分代码被运行

常量名

全大写,如果有多个单词用下划线分隔
SOCIAL_AUTH_WEIBO_KEY = '123456'
SOCIAL_AUTH_WEIBO_SECRET = '12345678901234567890'

字典的添加

dict45 = {"Bili":"北京","twodog":"shenzhen"}
dict45["yellowhair"] = "shenzhen"
print(dict45)

字典的修改

因为一个key对应一个value,所以,多次对一个key的value赋值,其实就是修改值
dict1["lilei"] = 80
dict45["twodog"] = "changsha"
print(dict45)

删除

dict45.pop("yellowhair")
print(dict45)

遍历

遍历键

for key in dict45:
print(key, dict45[key])

遍历值

for value in dict45.values():
print(value)

遍历字典项

for k, v in dict45.items():
print(k, v)

遍历字典健值

for k, v in enumerate(dict45):
print(k, v)

和list比较

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

list

1、查找和插入的速度随着数据量的增多而减慢
2、占用空间小,浪费内存少

tuple元组

tuple
本质:是一种有序集合
特点:
1、与列表非常相似
2、一旦初始化就不能修改
3、使用小括号

创建一个元组,如果只有一个元素,需要加逗号

tuple46 = (1,)
print(tuple46)

tuple47 = (1,2,3,"hello",1,2,3)
print(tuple47)

tuple48 = (1,2,3,4,5)
print(tuple48[0])

print(tuple48[-1])

超出边界

print(tuple48[-6])

修改元组

tuple49 = (1,2,3,4,5)
tuple49[0] = 10
print(tuple49)

tuple50 = (1,2,3,[4,5])
tuple50[-1][0] = 100
print(tuple50)

删除元组

tuple51 = (1,2,3,4,5)
del tuple51
print(tuple51)

元组的操作

tuple52 = (1,2,3)
tuple53 = (4,5,6)
print(tuple52+tuple53)

判断元素是否在元组中

tuple54 = (1,2,3,4,5)
print(2 in tuple54)

元组的截取,前闭后开区间

tuple55 = (1,2,3,4,5)
tuple56 = tuple55[1:3]
print(tuple56)

tuple57 = tuple55[:4]
tuple58 = tuple55[3:]

二维元组,元素是一维元组的元组

tuple59 = ((1,2),(3,4),(5,6),(7,8,9))
print(tuple59)

print(tuple59[3][2])

返回元组中的个数

tuple60 = (1,2,3,4,5)
print(len(tuple60))

返回元组中的最大值和最小值

tuple61 = (1,2,3,4,5)
print(max(tuple61))
print(min(tuple61))

元组的遍历

tuple62 = (1,2,3,4,5)
for i in tuple62:
print(i)

set集合

set:类似dict,是一组key的集合,不存储value
本质:无序和无重复元素的集合
创建set需要一个list或者tuple或者dict作为输入集合
重复元素在set中会自动被过滤
set63 = set([1,2,3,4,5,1,2,3,4,5])
print(set63)
set64 = set((1,2,3,1,2,3))
print(set64)
set65 = set({"Bili":"beijing", "twodog":"shenzhen"})
print(set65)

添加

set66 = set([1,2,3,4,5])
set66.add(6)
print(set66)
set66.add((7,8,9))
print(set66)

删除,删除的是值

set67 = set([1,2,3,4,5])
set67.remove(3)
print(set67)

遍历

set68 = ([1,2,3,4,5])
for i in set68:
print(i)

for index, data in enumerate(set68):
print(index, data)

set69 = set([1,2,3,4,5])
set70 = set([2,3,4,7,8])

交集

set71 = set69 & set70
print(set71)
print(type(set71))

并集

set72 = set69 | set70
print(set72)
print(type(set72))

number数字

分类:整数、浮点数、复数,其中整数包括正整数和负整数,和数学中的写法一样

数字类型的转换

什么是库?库就是封装了一些方法的函数

import math
import random

f1 = 1.1
f2 = 2
print(f1+f2)

数字类型转换

print(int(2.9))
2

print(float(1))
print(int("12345"))
print(float("12.345"))

如果有其他无用字符会报错

print(int("abc"))
print(int("123abc"))

只有作为正负号才有意义

print(int("+12345"))

print(int("12+3"))

print(int("-12345"))

print(int("12-3"))

数学功能

返回数字的绝对值

a1 = -10
a2 = abs(a1)
print(a2)

比较两个数的大小

a3 = 100
a4 = 9
print((a3>a4)-(a3<a4))

返回给定参数的最大值

print(max(1,2,3,4,5,6,7,8))

返回给定参数的最小值

print(min(1,2,3,4,5,6,7,8))

求x的y次方 2^5

print(pow(2, 5))

round(x[,n])返回浮点数x的四舍五入的值,如果给出n值,则代表舍入到小数点后n位

print(round(3.141592654))
print(round(3.141592654))
print(round(3.141592654, 2))
print(round(3.141592654, 1))

向上取整

print(math.ceil(1.1))
print(math.ceil(1.9))

向下取整

print(math.floor(1.1))
print(math.floor(1.9))

返回整数部分与小数部分

print(math.modf(2.3))

开方

print(math.sqrt(9))

随机数

1从序列的元素中随机挑选一个元素

print(random.choice([1,3,5,7,9]))
print(random.choice(range(5)))#range(5) == [0,1,2,3,4]
print(random.choice("girl"))#"sunck" == ["s","u","n","c","k"]

产生一个1~100之间的随机数

r1 = random.choice(range(10)) + 1
print(r1)

从指定范围内,按指定的基数递增的集合中选取一个随机数

random.randrange([start,] stop[, step])

start--指定范围的开始值,包含在范围内,默认是0

stop--指定范围的结束之,不包含在范围内

step--指定的递增基数,默认是1

print(random.randrange(1, 100, 2))

从0-99选取一个随机数

print(random.randrange(100))

随机生产[0,1)之间的数(浮点数)

print(random.random())

list = [1,2,3,4,5]

将序列的所有元素随机排序

random.shuffle(list)
print(list)

随机生产一个实数,他在[3,9]范围

print(random.uniform(3,9))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 1. 数值类型 ** int 整数 **如:1,100,-8080,0,十六进制:0xff00,0xa5b4c3d...
    泊牧阅读 267评论 0 0
  • 1.列表1.1取单个值1.2切片获取子列表1.3用len()函数获取列表长度1.4列表的循环1.5列表的链接和复制...
    developerChenxi阅读 434评论 0 1
  • #coding:utf-8 #设置编码为utf-8 #基本数据类型========================...
    青青河边踩阅读 570评论 1 1
  • python 数据类型 Python中的数据结构的说明 在Python中,不需要提前声明,当给一个变量赋值的时候就...
    So_ProbuING阅读 685评论 0 2
  • 炽烈的盛放,唯有在六月最美的季节。仲夏时节,身着一身清凉逶迤而行,用心感受浓郁热烈夏之韵,夏之美。 当整个城市...
    暗香之渡阅读 864评论 3 3