目录
1、为什么python print打印有些需要带括号有些不要?
1、为什么python print打印有些需要带括号有些不要?
python 3.X 版本print打印都必须带括号。
2、print打印版本号?
import sys
sys.version
3、print打印map和reduce结果?
在Python2里,直接使用map就可以打印结果
print(map(lambda x:x*2, [1,2,3]))
但是在Python3里,map返回的结果是迭代器(iterator)
需要先转换为列表list
print(list(map(lambda x:x*2, [1,2,3])))
4、python 3 中 reduce函数使用不了?
在python3中将reduce从全局函数放入到functools模块,使用前需要先引入
from functools import reduce
5、python中出现中文注释报错?
在代码首行添加:
# -*- coding: utf-8 -*-
6、Python序列类型
标准数据类型
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
序列:
字符、列表、元组
特点:
所有序列都支持迭代
序列表示索引为非负整数的有序对象集合
字符和元组属于不可变序列,列表可变
1、字符
字符串字面量:把文本放入单引号、双引号或三引号中;
文档字串:模块、类或函数的第一条语句是一个字符的话,该 字符串就成为文档字符串,可以使用__doc__属性引用;
例:
>>> def printName():
"the function is print hello"
print 'hello'
>>> printName.__doc__
运算符:
索引运算符 s[i] 返回一个序列的元素i
切片运算符 s[i:j] 返回一个切片
扩展切片运算符 s[i:j:stride]
支持运算:
索引、切片、min()、max()、len()等
len(s) s中的元素个数
min(s) s的最小值
max(s) s的最大值
支持方法:
S.index(sub [,start [,end]]) 找到指定字符串sub首次出现的位置
S.upper() 将一个字符串转换为大写形式
S.lower() 将一个字符串转化为小写形式
S.join(t) 使用s作为分隔符连接序列t中的字符串
S.replace(old, new[, count]) 替换一个字符串
2、List列表
列表:容器类型
任意对象的有序集合,通过索引访问其中的元素,可变对象,长度可变,异构,任意嵌套
支持在原处修改,修改指定的索引元素,修改指定的分片,删除语句,内置方法(注意:因为支持原处修改,不会改变内存位置,可使用 id() 查看其位置变化)
内置方法:
L.count(value) 计算value值出现的次数
L.append(object) 将一个新元素追加到L末端
L.extend(iterable) 增加合并列表(第二个列表内容会以单个元素追加至末端)
L.pop([index]) 返回元素index并从列表中移除它,如果省略则返回并移除列表最后一个元素
L.remove(key) 移除值为key的元素
L.index(value) 指定值首次出现的位置
L.insert(index, object) 在索引index处插入值
L.sort() 排序
L.reverse() 逆序
成员关系判断字符:
in 用法: item in container
not in item not in container
列表复制方式:
浅复制:两者指向同一内存对象
>>> l1 = [ 1,2,3,4 ]
>>> l2 = l1
>>> id(l1) == id(l1)
True 可以看出两者内存地址相同
>>> l1.append('x')
>>> print l1
[ 1,2,3,4,'x' ]
>>> print l2
[ 1,2,3,4,'x' ]
深复制:两者指向不同内存对象
1)导入copy模块,使用deepcoop方法
>>> import copy
>>> l3 = copy.deepcopy(l1)
>>> id(l3) == id(l1)
False 地址不同
2)复制列表的所有元素,生成一个新列表
>>> l4 = l1[:]
>>> print l4
[ 1,2,3,4,'x' ]
>>> l1.append(6)
>>> print l1
[ 1,2,3,4,'x',6 ] l1改变
>>> print l4
[ 1,2,3,4,'x' ] l4不变
3、Tuple元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
创建空元组
tup1 = ()
元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = (50,)
修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 创建一个新的元组
tup3 = tup1 + tup2
删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
tup = (12, 34.56)
del tup
元组操作符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
Python 表达式 | 结果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 计算元素个数 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print x, | 1 2 3 | 迭代 |
元组内置函数
Python元组包含了以下内置函数
cmp(tuple1, tuple2) 比较两个元组元素。
len(tuple) 计算元组元素个数。
max(tuple) 返回元组中元素最大值。
min(tuple) 返回元组中元素最小值。
tuple(seq) 将列表转换为元组。
4、Set(集合)
集合(set)是一个无序不重复元素的序列。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
5、Dictionary(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
7、Python可哈希性数据结构
可哈希的数据类型,即不可改变的数据结构(字符串str、元组tuple、对象集objects)。
不可哈希的数据类型,即可改变的数据结构 (字典dict,列表list,集合set)
可哈希的数据结构,可以通过迭代等方法进行去重等;但不可哈希的数据结构,往往在去重的方法上需要做相应的改造,例如嵌套字典的列表,根据字典中的某些元素属性去重,嵌套列表去重等.