Python 入個門(二)
Python編程 从数据分析到数据科学 摘抄及拓展
12.2 关于else的用法:
-
在python中,else不仅可以和if搭配使用,也可以和for,while搭配
-
当 while/for 循环正常执行完的情况下,执行 else 输出;
-
如果当 while/for 循环中执行了跳出循环的语句,比如 break,将不执行 else 代码块的内容;
14.列表
-
定义:(强制类型转化):str - > list 用list(‘hello’)可得到[‘h’, ‘e’, ‘l’, ‘l’, ‘o’]
-
切片:
-
反向遍历
- 1.步长为-1
- 2.reversed() (不改变原来的列表,返回一个迭代器对象,需要list()转型后读取内容)
- 3.列表的排序
a = [1, 3, 5, 7, 2, 4, 6, 8]
b = sorted(a, reverse=0) #reverse为0从小到大排序,默认值为0
print(list(b)) # [1, 2, 3, 4, 5, 6, 7, 8]
print(a) # [1, 3, 5, 7, 2, 4, 6, 8]
a.sort()
print(a) # [1, 2, 3, 4, 5, 6, 7, 8]
myList1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
myList2 = [11, 12, 13, 14, 15, 16, 17, 18, 19]
ans = [i + j for i, j in zip(myList1, myList2)]
print(ans)
# [12, 14, 16, 18, 20, 22, 24, 26, 28]
- 3.列表推导式
a = [i for i in range(10)]
print(a) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [type(i) for i in [True, 1.0, 2 + 3j, {'name': 'tty', 'sex': 'man'}]]
print(b) #[<class 'bool'>, <class 'float'>, <class 'complex'>, <class 'dict'>]
c = ['input%d.txt' % i + 'dd%d' % i for i in range(5)]
print(c) # ['input0.txtdd0', 'input1.txtdd1', 'input2.txtdd2', 'input3.txtdd3', 'input4.txtdd4']
-
列表的增删改查
- li.insert(a,b) a为下表,b为值
- li.pop(a) a为下标
- del li[a] a为下标
- li.remove(a) a为值
- 用列表推导式或filter函数删除,set过滤
a = [1, 2, 3, 4, 4, 5, 6, 7]
a = [x for x in a if x != 4]
print(a) # [1, 2, 3, 5, 6, 7]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = list(filter(lambda x: x % 2 == 0, a))
print(a) # [2, 4, 6, 8, 10]
myList = [2, 3, 5, 6, 7, 3, 2]
print(list(enumerate(myList)))
# [(0, 2), (1, 3), (2, 5), (3, 6), (4, 7), (5, 3), (6, 2)]
myDict = dict((value, i) for i, value in enumerate(myList))
print(myDict)
# 过程:2:0,3:1 被后来追加的 2:6 3:5覆盖
# {2: 6, 3: 5, 5: 2, 6: 3, 7: 4}
15.元组
16.字符串
1.join
print('.'.join('hello'))
# h.e.l.l.o
2.strip:去除字符串的左右空白
a = ' hello world '
print(a.strip()) # 'hello world'
print(a) # ' hello world '
3.ord和chr 计算对应的Unicode编码/对应的字符
4.str.upper() 大写
5.应用
str1 = ['abc', 'aaba', 'abefg', 'bb', 'cc']
str1.sort()
print(str1) # ['aaba', 'abc', 'abefg', 'bb', 'cc']
str1.sort(key=lambda x: len(list(x)))
print(str1) # ['bb', 'cc', 'abc', 'aaba', 'abefg']
str1.sort(key=lambda x: len(set(x)))
print(str1) # ['bb', 'cc', 'aaba', 'abc', 'abefg']
17.序列
18.集合
a = {1, 3, 5, 7}
b = {2, 4, 6, 7}
print({1, 3} < a) # True
print(a | b) # {1, 2, 3, 4, 5, 6, 7} 合集
print(a & b) # {7} 交集
print(a - b) # {1, 3, 5} 差集
print(a ^ b) # {1, 2, 3, 4, 5, 6} 对称差分
print({1, 5}.issubset(a)) # True 是否为子集
print({1, 3, 5, 7, 9}.issuperset(a)) # True 是否为父集
c = frozenset({1, 2, 3, 4}) # 不可变对象,数据分析和数据科学项目中通常采用frozenset
19.字典
20.迭代器和生成器
24.自定义函数
- 调用
def func():
'''根据提示来输出我'''
j = 0
print('hello world')
def func2(x):
print(f'{x} is from func2')
return func2
func()
# hello world
func()(2)
# hello world
# 2 is from func2
- 变量
x = 0
def func():
global x
x = 1
print(x)
func() #1
print(x) #1
x = 0
def func():
x = 2
def fun2():
nonlocal x
x = 3
print(f'fun2的x是 {x}')
print('func的x是', x)
return fun2
func()()
print('全局的x是', x)
'''
func的x是 2
fun2的x是 3
全局的x是 0
'''
(从python3开始不作为内置函数)
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
from functools import reduce
sum = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5, 6, 7, 8])
print(sum)
终于看完第二篇了,呼