Python笔记1-20151021
一、字符串和字符编码
| 字符 | ASCII | Unicode | UTF-8 |
|---|---|---|---|
| A | 01000001 | 00000000 01000001 | 01000001 |
| 中 | x | 01001110 00101101 | 11100100 10111000 10101101 |
从上面的表格可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分。
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文本读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:
浏览页面的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必制定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python编辑器,按照UTF-8编码读取源代码,否则,你在源代码中邪的中文输出可能会出现乱码。
二、格式化
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
常用的占位符有:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
若不确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:
>>>'Age: %s. Gender: %s' % (25,True)
'Age:25. Gender : True'
若字符串里面的%是一个普通字符,这个需要转移,用%%来表示一个%:
>>>'grouwth rate: %d %%' % 7
'growth rate: 7 %'
| %d | 整数 |
| %f | 浮点数 |
| %s | 字符串 |
| %x | 十六进制整数 |
三、list和tuple
序列有两种:tuple(定值表; 也有翻译为元组) 和 list (表),tuple和list的主要区别在于,tuple的各个元素不可再变更,而list的各个元素可以再变更。
1、list
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
比如,列表班里所有同学的名字,就可以用一个list表示:
>>>classmates['Michael','Bob','Tracy']
>>>classmates
['Michael','Bob','Tracy']
变量classmates就是一个list。用len()函数可以获得list元素的个数:
>>>len(classmates)
3
用索引来访问list中每一个位置的元素,索引是从0开始的:
>>>len[0]
'Michael'
若要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:
>>>classmates[-1]
'Tracy'
以此类推,可以获取倒数第2个、倒数第3个:
>>>classmates[-2]
'Bob'
>>>classmates[-3]
'Michael'
list是一个可变的有序表,所以,可以往list中追加元素到末尾:
>>>classmates.append('Adam')
>>>classmates
['Michael','Bob','Tracy','Adam']
把元素插入到制定的位置,比如索引号为1的位置:
>>>classmates.insert(1,'Jack')
>>>classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
要删除指定位置的元素,用pop(i)方法,其中i是索引位置:
>>>classmates.pop(1)
'Jack'
>>>classmates
['Michael','Bob','Tracy']
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
>>>classmates[1] = 'Sarah'
>>>classmates
['Michael','Sarah','Tracy']
list里面的元素的数据类型也可以不同,比如:
>>>L = ['Apple',123,True]
list元素也可以是另一个list,比如:
>>>s = ['python',‘java’,['asp','php'],'scheme']
>>>len(s)
4
2、tuple
tuple和list非常类似,但是tuple一旦初始化就不能修改,比如:
>>>classmats = ('Michael','Bob','Tracy')
classmates这个tuple不能变,它也没有append(),insert(),获取元素的方法和list一样,可以使用classmates[0],classmates[-1],但不能复制成另外的元素。
因tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
tuple陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须确定下来。
若定义只有1个元素的tuple:
>>>t = (1)
>>>t
1
定义的不是tuple,是这个数,因为括号()既可以表示tuple,又可以表示数学公式中的小括号,为避免歧义,Python规定,这种情况下,按小括号进行计算,因此结果为1。
当需要定义只有1个元素的tuple时必须加一个逗号,,来消除歧义:
>>>t = (1,)
>>>t
(1,)
tuple中的元素可以为一个list。
Python笔记1-20151021的更多相关文章
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- 20.Python笔记之SqlAlchemy使用
Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...
- Python笔记——类定义
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- python笔记 - day8
python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...
- python笔记 - day7-1 之面向对象编程
python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...
- python笔记 - day7
python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...
- python笔记 - day6
python笔记 - day6 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 大纲: 利用递归,实现阶乘: Python反射 pyt ...
随机推荐
- git 客户端提交
01 按照git到本地 02 按照小乌龟操作面板, 03 (git 和小乌龟)自动加载到右键快捷方式
- C#操作xml文件进行增、删、改
进行操作的xml文件: products.xml <?xml version="1.0" encoding="utf-8"?><product ...
- mac 终端下ssh 登录远程服务器不发输入中文
转:https://segmentfault.com/q/1010000000150673 用Mac的iterm2 ssh连上去,终端显示中文乱码,也不能输入中文,然而本地终端可以显示和输入. 解决方 ...
- angular中的jsonp记录
angular的正常机制采用引入$http服务的形式进行 get post等的访问.但是在跨域访问的时候就需要采用jsonp了. 不废话,直接上示例和引用原文地址: 比如访问地址为 http://ur ...
- URL中文参数乱码的一个解决办法
浏览器对有中文参数的url大部分都用utf-8编码,但我也曾经遇见过用GB2312编码的:如果遇见这样情况,那么接受到的参数就会出现乱码.乱码情况视服务器解码方式,Asp.Net网站一般默认为ut ...
- Java Day03 面向对象程序设计
1.面向对象 面向对象是指一种程序设计泛型,同时也是一种程序开发的方法. 2.类 类是一种抽象的概念,类中包含了数据与对数据的操纵. 具有相同特性(数据元素)和行为(功能)的对象的抽象就是类.类是对象 ...
- fork()子进程与waitpid()
#!/usr/bin/perl use warnings; use strict; use POSIX ":sys_wait_h"; $SIG{CHLD} = sub{ my $p ...
- VMware安装Centos6.8设置ip无法远程连接问题
今天使用VMware安装Centos6.8minimal版本再设置ip地址的时候遇到了一些麻烦,就是无法ping通Centos操作系统的配置的ip从而无法用Xshell远程连接上. 如何配置请看下面的 ...
- struts2.3 创建工程
1:在该网站下载struts2.3.16.3,目前为最新版.http://www.struts.apache.org/download.cgi 不妨下载“Full Distribution”版本 下载 ...
- usaco 17.Jan 铜组T3
上午在打usaco月赛的铜组题,T1T2是用来秒杀的,然而T3卡了一上午,下面给出题面: 题意大概就是输入一个N*N的矩阵,矩阵中元素只有0与1两种状态,每次操作以左上角的点为矩阵中某一矩阵的左上方顶 ...