Skip to main content

Python 3 学习笔记 - 数据类型

Python变量

1、Python是动态语言,不需要声明变量,但变量在使用前必须赋值,变量赋值以后该变量才会被创建。变量的类型由所赋予的值的类型来决定通。

2、查询变量所指向的对象数据类型:

type()   //返回数据类型,如class 'int'

isinstance(a, int)   //返回 True / False

3、一个变量可以通过赋值指向不同类型的对象,只保留最后一次赋值

4、可以同时为多个变量赋值,例:

a, b, c , d = 100, ‘bob’, 3e+26J, True


Python数据类型

Python3 中有六个标准的数据类型:

序号

数据类型

说明

赋值示例

01

Number(数字)
不可变类型

4种数字类型,Python3支持布尔型

num = 1

02

String(字符串)
不可变类型

由1个或多个字符组成

str = ‘abcd’

03

List(列表/数组)
可变类型

列表是有序的对象结合

list = [1,2,3,4,5,’six’]
lists = [
    [‘a’,’A’,1], [‘b’,’B’,2]
]

04

Tuple(元组)
不可变类型

数组的简化,最大特点是不可修改,作常量使用

tup = (1,2,3,4,5,’six’)

05

Sets(集合)

集合是无序不重复元素的序列

set1 = {'aa', 'bb', 'cc'}
set2 = set('abcada')

06

Dictionary(字典)
可变类型

字典是一种映射类型,是无序的对象集合


dict = {
    ‘k1’:’a’,
    ‘k2’:’1’ ,
    ‘k3’:{k31:31}}


Number(数字)

1、Python3 数字类型支持: int(整数)、float(浮点)、bool(布尔)、complex(复数)

2、在混合计算时,Python会把整型转换成为浮点数。


String(字符串)

1、字符串用单引号'xxx'或双引号"xxx"

2、三引号"""xxx""" 或者 '''xxx''',表示多行的字符串,三引号中可嵌套单引号和双引号

3、反斜杠\ 为转义字符 或 换行,字符串前加 r R可以让反斜杠不发生转义

4、字符串的索引值以 0 为开始值,变量[上标:尾下标]

5、加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串

print (str + "ABC")    # 连接字符串
print (str * 2)             # 输出字符串两次


List(列表)

1、列表用方括号[xxx]表示,元素之间用逗号 , 隔开

2、列表的元素可以多种类型,可嵌套列表,例:

list = [ 'abcd', 123, 3.1415, 'efg', 70.2 ]

3、列表可以使用 + 操作符进行拼接

4、列表中的元素是可变的

5、列表常用操作:

insert(n,v),在数组索引n的位置,插入值v

num.insert(1,9)
[1, 9 , 2, 3 ,4 ,5]

append(),在数组末尾添加上元素

num.append(6)
[1, 9 , 2, 3 ,4 ,5, 6]

pop(),默认删除最后一个元素,pop(n)删除索引n对应的元素

num.pop(1)
[1, 2, 3, 4, 5, 6]

num.pop()
[1, 2, 3, 4, 5]


Tuple(元组)

1、元组用括号(xxx)表示,元素之间用逗号 , 隔开

2、元组特性与列表一样,但元组的元素不能修改

3、元组可以使用 + 操作符进行拼接

4、包含 一个元素的元组,需要在元素后添加逗号

tup1 = (20,) 

5、Python函数返回多个值的时候,是以元组的方式返回


序列切片

1、String、List、Tuple 都属于序列。

2、list[x:y] 表示从索引x开始到索引y的元素集合

3、方括号左边是闭区间,右边是开区间,所以不包含list[y]

4、特殊索引位说明:

[0:]表示从索引0开始,直到最后一个元素
[:n]表示从第一个元素开始,直到索引n
[:-1]表示从第一个元素开始,到倒数第二个元素

以字符串为例:

str = 'abcdefg'
 
print (str)          # 输出字符串
print (str[0])       # 输出字符串第一个字符
print (str[0:-1])    # 输出第一个到倒数第二个的所有字符
print (str[2:])      # 输出从第三个开始的后的所有字符


Set(集合)

1、集合使用大括号 { } 或者 set() 函数创建

set_stu1 = {'aa', 'bb', 'cc', 'bb', 'cc', 'aa'}
set_stu2 = set('abcadcdabaca')

2、创建一个空集合必须用 set() ,而不能用 { }

3、集合的基本功能是进行成员关系测试和删除重复元素,例:

print (set1)
{'aa', 'bb', 'cc'}

print (set2)
{'b', 'a', 'd', 'c'}


Dictionary(字典)

1、字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合

2、字典的键(key)必须为不可变类型,且必须唯一

3、创建空字典使用 { }

4、字典元素的输出顺序与定义顺序无关,因为定义时key的顺序和放在内存的key顺序没有关系,例:

dict = {‘bb’:20, ‘aa’: 10 , ‘cc’:30}
print(dict)
{‘aa’:10, ‘bb’: 20 , ‘cc’:30}

5、字典采用散列表(hashtable)的算法,不管字典中有多少项,in操作符花费的时间都差不多。

6、字典的内置的函数

dict.keys()    返回所有的key值
dict.values()    返回所有的value值
dict.items()    返回key,value组成的元组

list(dict.items() )  将返回结果转换成列表/数组


数据结构的遍历

1、列表/元组的遍历

for v in list:
    print(v)

2、列表+循环用法:

[i*2 for i in range(10) if i%2==0]

3、字典的遍历,输出key

for k in dict:
    print(k)

4、字典的遍历,输出value值

for v in dict.values():
    print(v)

3、字典的遍历,同时输出key:value

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

或者

for c in dict:
    print(c,':',dict[c])

***dict循环输出不是按赋值时的顺序


数据类型转换

常用类型转换内置的函数列表:

函数

描述

int(x [,base])

将x转换为一个整数

long(x [,base] )

将x转换为一个长整数

float(x)

将x转换到一个浮点数

complex(real [,imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个序列 (key,value)元组。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

unichr(x)

将一个整数转换为Unicode字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串

Comments

Popular posts from this blog

Cloudera Hadoop 集群安装(ubuntu + CDH5.10)

前言 CDH是Cloudera公司的Hadoop发行版,基于稳定版本的Apache Hadoop构建,包含Hadoop,Spark,Hive,Hbase和一些工具等,并集成了很多补丁,可直接用于生产环境。通过Cloudera Manager可以简化hadoop各组件的部署和配置过程。 目前CDH对ubuntu支持的最高版本为14.04,因此不建议使用更高版本的ubuntu来部署CDH。 环境准备: 1.配置网络(所有节点) 修改hostname: $ sudo vi /etc/hostname cdh01 修改IP地址: $ sudo vi /etc/network/interfaces auto eth0 iface eth0 inet static         address 172.16.13.11         netmask 255.255.255.0         gateway 172.16.13.254 重启网络服务生效: $ sudo ifdown eth0 && sudo ifup eth0 修改ip与主机名的对应关系: $ sudo vi /etc/hosts 172.16.13.11 cdh01 172.16.13.12 cdh02 172.16.13.13 cdh03 2.配置SSH(所有节点) 启用root登陆(CDH5.10需要进行此步操作) $ sudo vi /etc/ssh/sshd_config #PermitRootLogin without-password PermitRootLogin yes $ sudo service ssh restart $ sudo passwd root 设置ssh无密码登陆 //在主节点上执行一路回车,生成无密码的密钥对 $ ssh-keygen -t rsa //将生成的密钥文件复制到其它节点 $ ssh-copy-id cdh02 $ ssh-copy-id cdh03 测试: 在主节点上ssh hadoop2,正常情况下,不需要密码就能直接登陆进去了。 3.安装Oracle JDK(所有节点) 运行CDH5必须使用Oracle的Jdk,需要Java 7及以上版本支持。 在Oracle的官网下载jdk包,解压到相应目录,例如/usr/java/jdk1.8.0_

Bitwarden 配置 Let’s Encrypt 证书

由于在内网环境部署的Bitwarden,不能通过安装脚本自动申请 Let’s Encrypt 的证书。 起初我用了一个自签名证书,发现特别不好使,虽然在firefox 跟 chrome 内核的浏览器上都能通过插件访问,但必须添加信任才行,特别是用Bitwarden Desktop 客户端连的时候,一直报错,可能是不认自签名证书。 于是琢磨了下怎么手动申请Let’s Encrypt的证书用于内网,对过程简单梳理如下。 自签名证书 | Self-Signed Certificate 如果你在内网环境只需要自签名证书,可以参考Bitwarden的帮助文档( Installing and depoying )进行设置: 1、生成自签名证书: //一条命创建私钥和证书: openssl req -x509 -newkey rsa:4096 -sha256 –nodes -days 10950 \    -keyout privite.key -out identity.crt \    -subj "/C= US /ST= New York /L= New York /O= Company Name /OU= CREAST /CN= bw.creast.win " 将生成的文件放到 /ssl 目录下: privite.key     ~/bwdata/ssl/ bw.creast.win/private.key identity.crt      ~/bwdata/ssl/ bw.creast.win/identity.crt 2、生成.pfx格式证书文件: //一条命令将前面生成的私钥和证书打包成需要的pfx格式文件 openssl pkcs12 -export -out ./ identity.pfx -inkey privite.key \    -in identity.crt -certfile identity.crt -passout pass: IDENTITY_CERT_PASSWORD 注意 IDENTITY_CERT_PASSWORD 跟./env/global.override.e

Tor洋葱路由的设置与使用

先说明一下,这里只是利用Tor来访问被GWF屏蔽的优秀服务(如Wikipedia、Blogger、GG App等),并不侧重于如何匿名访问网络。以下Tor设置方法适用于: MS Windows(2000/XP/Vista/Server)系统 第一步:下载并安装Tor 关于Tor(The Onion Router,洋葱路由)的工作原理,可以参考枪旗工作室的说明 ( http://tcno.net/doc/tor/#para1 )。在Windows下安装配置Tor已经非常容易了,直接下载这样一个Tor的Windows 捆绑软件包( Vidalia-Tor-Privoxy Bundle ),其中已经预先配置好这些软件能够一同工作。 安装前可以看到套件捆绑了哪些软件:Tor、Vidalia(Tor 的一个图形用户界面)和 Privoxy(Web 代理软件)、Torbutton(Firefox浏览器插件)全选这些软件进行安装。 安装完成后会自动运行Vidalia,在弹出的控制面板上可以看到当前的状态,Tor已经运行了,此时不需要再进行其它设置了。 第二步:配置浏览器使用Tor 如果使用 Firefox 浏览器,Bundle里已经附带了 Torbutton 插件 ,打开/重启Firefox就会在右下角显示Tor Enabled/Disabled,单击它可以选择是否开启Tor代理功能。 对于 Internet Explorer 没有现成的插件可用,需要手动配置代理设置,也很容易。 菜单位置 工具 - Internet 选项 - 连接 - 局域网设置 - 代理服务器 - 高级 - 服务器 在代理理服务器地址栏里填入 "localhost",端口为 "8118"(Privoxy不支持FTP代理,填不填都无所谓了);注意套接字SOCKS代理的端口为 "9050",如果有其它选项,请选择Socks5,然后"确定"即可。 对于 Maxthon ,如果对IE设置了Tor可以选择“使用IE代理设置”,或者手动添加一个代理列表,内容与上面填写的一样,然后选择应用就可以了。 这里说明一下 Privoxy 的作用,因为当直接使用 SOCKS 代理时,浏览器会泄露