基础数据类型

什么是数据类型?

我们人类可以很容易的分清数字与字符的区别,但计算机并不能,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的。

因此,在每个编程语言里都会有一个叫数据类型的东西,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。

字符串

str(字符串) ‘1’ ” I',m a teacher “

python中,凡是用引号(单引、双引),引起来的内容都是字符串。

字符串常用操作:

s = 'I am from china'

#首字母大写
print(s.capitalize())
I am from china #全大写
print(s.upper())
I AM FROM CHINA #全小写
print(s.lower())
i am from china #大小写反转
print(s.swapcase())
i AM FROM CHINA #所有首字母大写
print(s.title())
I Am From China #计算字符串长度
print(len(s))
15 #内容居中,两边填充(共50个字符串,多余的用~填充,默认填充符是空格)
print(s.center(50,'~'))
~~~~~~~~~~~~~~~~~I am from china~~~~~~~~~~~~~~~~~~ #判断字符串以什么开始
print(s.startswith('I'))
True #判断字符串以什么结尾
print(s.endswith('I'))
False #查询字符串是否含有某元素,找到返回元素对应下标,找不到返回-1
print(s.find('a'))

比较重要的几个方法:

s='  Chi nese '

#删除前后空格
print(s.strip())
Chi nese
#删除后面的空格
print(s.rstrip())
Chi nese
#删除前面的空格
print(s.lstrip())
Chi nese
#统计元素个数
print(s.count('e'))
2
#将字符串以元素中内容分割为列表
print(s.split())
['Chi', 'nese']
print(s.split('e'))
[' Chi n', 's', ' ']

切片:

切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)
a = 'ABCDEFGHIJK'
print(a[0:3])
ABC
print(a[2:5])
CDE
#默认到最后
print(a[0:])
ABCDEFGHIJK
# -1 是列表中最后一个元素的索引,但是要满足顾头不顾腚的原则,所以取不到K元素
print(a[0:-1])
ABCDEFGHIJ
#加步长
print(a[0:5:2])
ACE
#反向加步长
print(a[5:0:-2])
FDB  

索引:

索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推
a = 'ABCDEFGHIJK'
print(a[0])
print(a[3])
print(a[5])
print(a[7]) #输出
A
D
F
H

补充:
字符串计算

#相加,即拼接 : +
a = 'hello '
b = 'world'
print(a+b)
#输出
hello world #与数字相乘: *
print('hello '*4)
#输出
hello hello hello hell

字符串替换

#将重新替换为你,如果后面不跟次数,默认替换所有
s = '重新打开一个终端窗口,重新打开一个终端窗口'
s1 =s.replace('重新','你',1)
print(s1)
你打开一个终端窗口,重新打开一个终端窗口

字符串判断

print("hahaha".isalpha())       #判断是不是字母
print("hahaha123".isalnum()) #判断是不是阿拉伯数字
print(u"".isdecimal()) #判断是否只包含十进制字符,定义十进制在字符串前加'u'即可
print("".isdigit()) #判断是否整数
print("al_ex".isidentifier()) #判断是否合法的变量名
print("alex".islower()) #判断是否全为小写
print("Alex".isupper()) #判断是否全为大写

字符串循环

name='Love1'
for i in name:
print(i) #输出
L
o
v
e
1

整型

int(整型) 18,23 常用于计算。

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(长整型)

理论上Python没有限制长整数大小,实际由于机器内存有限,数值不会无限大

注意:在Python3里不再有long类型了,全都是int

float(浮点型)

扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html 
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

complex(复数) 
复数是由实数部分和虚数部分组成,一般是x+yj形式,其中x为复数的实数部分,y为复数的虚数部分

用来测磁场、量子力学之类的,很少用到。

数字在pycharm 中的表现形式: 
加引号的数字是 字符串;不加引号的数字是 “数字”,红色的

布尔值

bool(布尔值)

只有真或假两种状态,性别、命题真假,常用于判断。

真   1   True

假   0   False

列表

列表是python中的基础数据类型之一,它是以[ ]括起来,每个元素以逗号隔开,而且可以存放各种数据类型。

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。列表是有序的,有索引值,可切片,方便取值。

列表常用方法:

索引、切片同字符串。

增加

li = [1,'a','b',2,3,'a']

#按照索引去增加
li.insert(0,55)
print(li)
[55, 1, 'a', 'b', 2, 3, 'a']
#默认增加到最后一个元素
li.append('aaa')
print(li)
[1, 'a', 'b', 2, 3, 'a', 'aaa']
#增加一个列表到最后一个元素
li.append([1,2,3])
print(li)
[1, 'a', 'b', 2, 3, 'a', [1, 2, 3]]
#迭代增,会将内容分解到最小元素
li.extend('abc')
print(li)
[1, 'a', 'b', 2, 3, 'a', 'a', 'b', 'c']

 删除

li = [1,'a','b',2,3,'a']

#按索引删除
li.pop(0)
print(li)
['a', 'b', 2, 3, 'a']
#默认删除最后一个
li.pop()
print(li)
[1, 'a', 'b', 2, 3]
#按元素删除
li.remove('a')
print(li)
[1, 'b', 2, 3, 'a']
#清空列表
li.clear()
print(li)
[]
#直接删除列表
del li
print(li)
NameError: name 'li' is not defined
#切片去删除
del li[0:2]
print(li)
['b', 2, 3, 'a']

 修改

li = [1,'a','b',2,3,'a']

#按索引修改
li[0] = '8'
print(li)
['8', 'a', 'b', 2, 3, 'a'] #切片修改,按迭代处理,内容会分解到最小元素都加进去
li[0:2]='hello'
print(li)
['h', 'e', 'l', 'l', 'o', 'b', 2, 3, 'a']

 查询

li = [1,'a','b',2,3,'a']
#遍历查询
for i in li:
print(i)
1
a
b
2
3
a #测量长度
l=len(li)
print(l)
6 #统计次数
print(li.count('a'))
2 #查索引
print(li.index('b'))
2

 排序

li = [1, 5, 7, 2, 3, 4]

#正排序
li.sort()
print(li)
[1, 2, 3, 4, 5, 7] #倒排序
li.sort(reverse=True)
print(li)
[7, 5, 4, 3, 2, 1] #反转
li.reverse()
print(li)
[4, 3, 2, 7, 5, 1]

元组

数据只读,也叫做只读列表。

元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

字典 

字典一种key - value 的数据类型,使用就像我们小时候用的字典,通过部首、拼音来查对应页的详细内容。 
字典的特性: 字典是无序的; key必须是唯一的,so天生去重。 
字典里面的key是唯一的,所以不用索引表 
如何实现唯一?

hash 中文名:散列 通过一定的数学算法,使字符串能变成唯一的数字序列

增删改查

names = {
"stu1101" :{"name":"Alex","age":22,"hobbie":"girl"},
"stu1102" : "Jack",
"stu1103" : "rain",
}
print(names)
#查询
print(names["stu1101"])
print(names["stu1101"]["hobbie"])
#判断key-"stu1104"是否存在,如果存在返回值,如果否返回none;也可以自定义返回内容,此处为no
print(names.get("stu1104","no"))
#增加
names["stu1104"] = ["Rose",23,"DBA"]
print(names["stu1104"])
#修改
names["stu1104"][0] = "Violet"
print(names["stu1104"])
#删除
print(names.pop("stu1105","不存在"))
del names["stu1103"]
print(names) #输出
{'stu1103': 'rain', 'stu1102': 'Jack', 'stu1101': {'age': 22, 'name': 'Alex', 'hobbie': 'girl'}}
{'age': 22, 'name': 'Alex', 'hobbie': 'girl'}
girl
no
['Rose', 23, 'DBA']
['Violet', 23, 'DBA']
不存在
{'stu1104': ['Violet', 23, 'DBA'], 'stu1102': 'Jack', 'stu1101': {'age': 22, 'name': 'Alex', 'hobbie': 'girl'}}

循环

names = {
"stu1101":{"name":"Alex","age":22,"hobbie":"girl"},
"stu1102": "Jack",
"stu1103": "rain",
"stu1104":{"Rose",23,"DBA"}
}
#字典循环常用的两种方式:打印出key和value
# @1 尽量用这种,效率高
for key in names:
print(key,names[key])
# @2 先将字典转为列表,再进行循环,效率低
print(names.items())
for k,v in names.items():
print(k,v)
print(names.keys()) #打印所有key
print(names.values()) #打印所有value
#先获取这个值,如果存在就打印,不存在就创建
print(names.setdefault("stu1106","Mary"))
print(names)
#字典合并 相当于修改1102的值,因为字典中的key是唯一的
name1 = {"stu1102":"Java",1:333,2:444}
names.update(name1)
print(names)
#输出
stu1103 rain
stu1101 {'name': 'Alex', 'age': 22, 'hobbie': 'girl'}
stu1102 Jack
stu1104 {'Rose', 'DBA', 23}
dict_keys(['stu1103', 'stu1101', 'stu1104', 'stu1102'])
dict_values(['rain', {'name': 'Alex', 'hobbie': 'girl', 'age': 22}, {'DBA', 'Rose', 23}, 'Jack'])
Mary
{'stu1103': 'rain', 'stu1101': {'hobbie': 'girl', 'age': 22, 'name': 'Alex'}, 'stu1106': 'Mary', 'stu1104': {'Rose', 'DBA', 23}, 'stu1102': 'Jack'}
{1: 333, 'stu1106': 'Mary', 2: 444, 'stu1104': {'Rose', 'DBA', 23}, 'stu1103': 'rain', 'stu1102': 'Java', 'stu1101': {'hobbie': 'girl', 'age': 22, 'name': 'Alex'}}

字典中的深浅copy

names = {
"stu1101":{"name":"Alex","age":22},
"stu1102": "Jack",
"stu1103": "rain",
"stu1104":{"Rose",23,"DBA"}
}
name1 = names.copy()
#第一层的数据不会变,其他的都会变。应用场景:银行共享账户:主卡、副卡
names["stu1103"] = "RAIN" #此处相当于开辟了一块新的内存地址,所以names中的rain会改变
names["stu1101"]["age"] = 24 #此处只是修改了列表中的数据,而列表的内存地址没有改变,所以打印出的names和name1内容会相同
print(names)
print(name1)
#深copy, 完全copy
import copy
name2 = copy.deepcopy(names)
print(name2)
#输出
{'stu1103': 'RAIN', 'stu1102': 'Jack', 'stu1101': {'age': 24, 'name': 'Alex'}, 'stu1104': {'DBA', 'Rose', 23}}
{'stu1101': {'age': 24, 'name': 'Alex'}, 'stu1102': 'Jack', 'stu1103': 'rain', 'stu1104': {'DBA', 'Rose', 23}}
{'stu1101': {'age': 24, 'name': 'Alex'}, 'stu1102': 'Jack', 'stu1103': 'RAIN', 'stu1104': {'DBA', 'Rose', 23}}

Python常见数据类型及操作的更多相关文章

  1. python常见数据类型

    字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串烦人过程其实很简单,只需为变量分配一个值即可.例如: var = 'Hello Wor ...

  2. 一文了解Python常见的序列化操作

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  3. python的数据类型及操作

    简述python的几种简单的数据类型及使用方式 字符串 字符串是不可变数据类型,拥有多种内置方法可以操作. 创建字符串就是给变量分配一个字符串的值即可.通常用引号创建字符串. tell = 'my n ...

  4. 7.Python初窥门径(数据类型补充,操作及注意事项)

    python(数据类型补充,转换及注意事项) 数据类型补充 str str.capitalize() 首字母大写 str.title() 每个单词首字母大写 str.count() 统计元素在str中 ...

  5. python常见数据类型及操作方法

    title: "python数据类型及其常用方法" date: 2020-04-21T10:15:44+08:00 可变数据类型:允许变量的值发生变化,即如果对变量进行append ...

  6. python基本数据类型之操作

    python注释 当行注视:# 被注释内容多行注释:""" 被注释内容 """ 字符串操作 # 代表单行注释                ...

  7. Python 1 数据类型的操作

    一.数字(Number) 1.数学函数: 函数 返回值 ( 描述 ) abs(x) 返回数字的绝对值,如abs(-10) 返回 10 ceil(x) 返回数字的上入整数,如math.ceil(4.1) ...

  8. PYTHON常见数据类型示例

    shoplist = ['apple', 'mango', 'carrot', 'banana'] print('I have ', len(shoplist), ' items to purchas ...

  9. Python常见字符串处理操作

    Python中字符串处理的方法已经超过37种了,下面是一些常用的字符串处理的方法,以后慢慢添加. >>> s = 'Django is cool' #创建一个字符串 >> ...

随机推荐

  1. 命令行启动mysql服务

    在<计算机网络>课程中曾学过net命令,可以用于启动后台服务.在mysql中,net命令用于启动后台服务器进程mysqld,即后台服务. 不过,如果在普通用户模式下net start my ...

  2. Oracle数据库基础--建表语法+操作

    语法 1.建表 create table 表名( 列名 数据类型, …… ); 2.删除表:drop table 表名; 3.添加列:alter table 表名 add(列名 数据类型); 4.修改 ...

  3. crontab配置shell实现后台进程不间断运行

    检测get_report_no.php进程是否一直在运行 #!/bin/bash PROC=`ps -ef |grep get_report_no.php|grep -v grep|wc -l` if ...

  4. thinkphp分页+条件查询

    最近项目上面有一个带条件查询的分页列表,一开始form用的post,点击第二页就没有跳转成功,原因是分页是get请求,post数据链接到其他页面就会被清除. 解决办法: 1.form表单method= ...

  5. HDU3954 线段树(区间更新 + 点更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3954 , 一道比较好的线段树题,值得做. 题目是NotOnlySuccess大神出的,借此题来膜拜一下 ...

  6. 小记:iOS 中一般对于 view 不依赖 model 的的两种代码书写形式

    一. 前言 对于在 MVC 的定义中,view 层是不引用 model 层,view 和 model 是不相往来的 一般开发中,我们都写过 在自定义 view 中增加一个 model 的属性,外接直接 ...

  7. 生成.m文件的python代码中出现的错误

    错误代码 import tempfile import subprocess import shlex import os import numpy as np import scipy.io scr ...

  8. 重学css3(概览)

    css3新特性概览: 1.强大的选择器 2.半透明度效果的实现 3.多栏布局 4.多背景图 5.文字阴影 6.开放字体类型 7.圆角 8.边框图片 9.盒子阴影 10.媒体查询 浏览器内核又可以分成两 ...

  9. BundleConfig的作用

    在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原 ...

  10. 2.3.3 zerosum 和为零

    #include<bits/stdc++.h> using namespace std; ],a; ]={' ','+','-'}; void out() { ;i<a;i++) c ...