Python 入個門(三)

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]

  • 列表的extend和append
    • 1.extend 中的内容为一个序列, append加的是一个元素
    • 2.两个列表的并列相加计算
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]

  • 常用操作函数
    • len(li)
    • sorted(li)
    • li.sort()
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.元组

  • 定义强转 tuple()
  • 元组具有不可变性,操作可转化为列表进行
  • tu.count(a) 计算a出现的频次

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.序列

  • 可以迭代,如在循环中遍历
  • 通用函数
    • len()
    • sorted()
    • reversed()
    • enumerate() : 跟踪和枚举下标
    • zip() :两个对象的同步计算(形象的来说像拉链一样组合起来)

18.集合

  • 定义set()
  • 无序性,确定性,互异性:所以集合不能用下标操作
  • 基本运算
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.字典

  • 定义dict()
  • 无序,访问需要通过key

20.迭代器和生成器

  • iter()可以将可迭代对象转化为迭代器
  • 迭代器:有内置函数next()
  • 生成器:用yeild语句代替return 惰性计算

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
'''
  • reduce函数

(从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)

终于看完第二篇了,呼

发布了47 篇原创文章 · 获赞 2 · 访问量 1042

猜你喜欢

转载自blog.csdn.net/Weary_PJ/article/details/103994797
今日推荐