python基本语法以及编程技巧

python是完全面向对象的语言,设计哲学是优雅,明确,简单;所以嘛,人生苦短,何不用python。

一.简单介绍

1. 数据类型:数字型数据类型和非数字型数据类型,使用type()可以查看变量类型,也可分为可变类型(列表,字典)和不可变类型(数字,字符串,元组)

数字型数据类型:int, float

非数字型数据类型:字符串,列表(list),元组(tuple,元素不能修改),字典(dic,无序的对象集合)

元组与列表进行转换:list(元组)  # list函数将元组转为列表

                                    tuple(列表)    # tuple函数将列表转为元组

2. 切片:使用索引访问一定范围内的元素,除了字典无序外,其余数据类型可切片

3. 引用:变量中记录地址,即为引用;id()函数可以查看变量中保存数据所在的内存地址

二.基本语法及编程技巧

1. 获取numpy数组的最大值以及其索引

max_data = np.max(a)    # 获取a中的最大值
np.where(a==max_data))  # 获取a中最大值的索引,返回值依次为行号,列号等

2. 深拷贝

将numpy中的元素赋给另一个变量,在该变量中修改值,numpy中的值也会发生变化,因此为了避免这种情况,可以使用深拷贝

a = np.array([1,2,3])

b = a[0].copy()  # 深拷贝

3. 定义一个与已知numpy数据shape一样的全零数组

import numpy as np


a = np.array([[1,2],[3,4]])
b = np.zeros_like(a)  # 创建和a的shape一样的全零numpy数据

4. 根据数据a中的元素情况,对对应的数据b中对应位置的元素进行复制操作

label_slice1 = np.load(label_slice1_path)

pre = np.load(pred_path)
pre_slice1 = pre[102, :, :].copy()


intersection1 = np.zeros_like(label_slice1)


intersection1[(label_slice1 == 1) & (label_slice1 == pre_slice1)] = 255

5. 字符串的逆序

num_str[::-1]  # 方式1

num_str[-1::-1]  # 方式2

6. 交换两个变量值 

a, b = b, a   # 不用借助额外变量

7. 身份运算符(is, is not) 和 == 的区别

is : 用于比较两个对象的内存地址是否一致,即用于判断是否是对同一个对象的引用

==:用于判断引用的变量的值是否相等

a = [1, 2, 3]
b = [1, 2, 3]

print(a == b)  # True
print(a is b)  # False

8. 生成给定shape的全零或者全1的数组

a = np.ones((2,3))

b = np.zeros((2,3))

c = np.full((2,3), np.pi)

9. sorted中key的lambda匿名函数的使用方法(根据b列表的元素对a列表进行排序)

a = [10, 9, 8, 7, 6]
b = [5, 4, 3, 2, 1]


# 根据b列表的排序顺序对a列表进行相应的排序
new_a = sorted(a, key=lambda x: b(a.index(x)))  # [6, 7, 8, 9, 10]

10. 优先队列

from queue import PriorityQueue

q = PriorityQueue()

q.put([10,2,3])  # 根据put的元素进行由小到大的排序, 根据列表中的第一个元素排序
q.put([1,20,30])

print(q.get())   # [1, 20, 30]
print(q.get())   # [10, 2, 3]

11. set()类型

a = [1, 2, 3]
b = [4, 5, 6]

print(set(a) & set(b) == set())   # True

12. 上取整

import math

a = 5.4
print(math.ceil(a))  # 6

13. 通过for循环直接修改元素为列表的列表

a = [[1, 2, 3], [4, 5, 6]]
for i in a:   # i是a中元素的引用
    i[0] = 100

print(a)  # [[100, 2, 3], [100, 5, 6]]


# 注意以下异同
a = [1, 2, 3] 
for i in a:    # 不能修改a中元素值, 因为a中元素为不可变类型
    i = 100

print(a)  # [1, 2, 3]

 三.python中导入模块和包的路径问题:https://www.cnblogs.com/ydf0509/p/8298551.html

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值