1、需要同时使用索引与value的for:

list_1 = [1, 3, 5]
for i, value in enumerate(list_1):print iprint value

2、只需要使用索引计数的for循环(联想c++)

for i in range(1,5):print(i)

python3中range与xrange合并,取消了Python2中range的实现,xrange重命名为range,节省空间。

3、[表达式(i) for i in range(n)] ===>生成一个与range(n)相同length的新list

4、通过 : 访问list中的一部分元素能防止越界

import numpy as npa = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
length = int(np.ceil(len(a) / 3))
b = [a[i:i+length] for i in range(0, len(a), length)]
print(a)
print(a[1:14])
print(length)
print(b)

运行结果:

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

5、对Python元组的理解:类似c++中的const类型,不可修改,比如numpy.shape()返回的都是元组类型。

6、python中的view、shallow copy与deep copy

a、view

view是对原内容的引用,不占用新的内存,如numpy中array的slice操作

b、shallow copy

python中切片的浅拷贝探究-Python学习网

拷贝原对象A本身得到新对象C,但是如果对象A内部引用了对象B,则C也只拷贝B对象的引用,不会对对象B的内存做完整拷贝。如List的slice操作。

            综合a、b,numpy比list的slice操作更高效,因为没有任何内存拷贝操作。

c、deep copy

(1)不用copy模块时,对于list对象,list[:]代表深度copy

(2)用copy模块时,简单的object,copy与deepcopy的效果一样,但是如果时list中嵌套list这种复杂的object效果就不一样了,详情见代码。

#/usr/bin/env python
import copydef copy1(value):list4 = [1, 2, 3, 4, 5]value[:] = [list4[i] for i in range(len(list4))]list4.append(6)print('value id is: {}'.format(id(value)))print('list4 id is: {}'.format(id(list4)))print('list4 is: {}'.format(list4))return valuedef copy2(value):list4 = [1, 2, 3, 4, 5]value = [list4[i] for i in range(len(list4))]list4.append(6)print('value id is: {}'.format(id(value)))print('list4 id is: {}'.format(id(list4)))print('list4 is: {}'.format(list4))return valueif __name__ == '__main__':print("=====================test for list normal deepcopy====================")list1 = [1, 2, 3, 5]list2 = []list3 = []print('init list1 id:', id(list1))print('init list2 id:', id(list2))print('init list3 id:', id(list3))list2[:] = list1list3 = list1list1.append(6)print('list1 value is:', list1)print('list2 value is:', list2)print('list3 value is:', list3)print('final list1 id:', id(list1))print('final list2 id:', id(list2))print('final list3 id:', id(list3))print("=====================test for function param deepcopy====================")list5 = []value = copy1(list5)print('copy1 list5 is: {}'.format(list5))print('copy1 value is: {}'.format(value))print('copy1 value id is: {}'.format(id(value)))print('copy1 list5 id is: {}'.format(id(list5)))print("=====================test for function param shallowcopy====================")list6 = []value = copy2(list6)print('copy2 list6 is: {}'.format(list6))print('copy2 value is: {}'.format(value))print('copy2 value id is: {}'.format(id(value)))print('copy2 list6 id is: {}'.format(id(list6)))print("=====================test1 for python deepcopy module====================")origin = [2, 3, 5]cop0 = origincop1 = copy.copy(origin)cop2 = copy.deepcopy(origin)origin.append(7)print('origin is', origin)print('cop0 is {}'.format(cop0))print('cop1 is {}'.format(cop1))print('cop2 is {}'.format(cop2))print('origin id is {}'.format(id(origin)))print('cop0 id is {}'.format(id(cop0)))print('cop1 id is {}'.format(id(cop1)))print('cop2 id is {}'.format(id(cop2)))print("=====================test2 for python deepcopy module====================")origin1 = [2, 3, 5, [3, 6]]cop00 = origin1cop11 = copy.copy(origin1)cop22 = copy.deepcopy(origin1)origin1[3].append(7)print('origin1 is', origin1)print('cop00 is {}'.format(cop00))print('cop11 is {}'.format(cop11))print('cop22 is {}'.format(cop22))print('origin1 id is {}'.format(id(origin1)))print('cop00 id is {}'.format(id(cop00)))print('cop11 id is {}'.format(id(cop11)))print('cop22 id is {}'.format(id(cop22)))print('origin1: [3] id is {}'.format(id(origin1[3])))print('cop00: [3] id is {}'.format(id(cop00[3])))print('cop11: [3] id is {}'.format(id(cop11[3])))print('cop22: [3] id is {}'.format(id(cop22[3])))

运行结果:

=====================test for list normal deepcopy====================
init list1 id: 139778396823048
init list2 id: 139778396823240
init list3 id: 139778396419080
list1 value is: [1, 2, 3, 5, 6]
list2 value is: [1, 2, 3, 5]
list3 value is: [1, 2, 3, 5, 6]
final list1 id: 139778396823048
final list2 id: 139778396823240
final list3 id: 139778396823048
=====================test for function param deepcopy====================
value id is: 139778396419080
list4 id is: 139778396419016
list4 is: [1, 2, 3, 4, 5, 6]
copy1 list5 is: [1, 2, 3, 4, 5]
copy1 value is: [1, 2, 3, 4, 5]
copy1 value id is: 139778396419080
copy1 list5 id is: 139778396419080
=====================test for function param shallowcopy====================
value id is: 139778396418888
list4 id is: 139778396418952
list4 is: [1, 2, 3, 4, 5, 6]
copy2 list6 is: []
copy2 value is: [1, 2, 3, 4, 5]
copy2 value id is: 139778396418888
copy2 list6 id is: 139778396419016
=====================test1 for python deepcopy module====================
origin is [2, 3, 5, 7]
cop0 is [2, 3, 5, 7]
cop1 is [2, 3, 5]
cop2 is [2, 3, 5]
origin id is 139778396418952
cop0 id is 139778396418952
cop1 id is 139778396418824
cop2 id is 139778396418760
=====================test2 for python deepcopy module====================
origin1 is [2, 3, 5, [3, 6, 7]]
cop00 is [2, 3, 5, [3, 6, 7]]
cop11 is [2, 3, 5, [3, 6, 7]]
cop22 is [2, 3, 5, [3, 6]]
origin1 id is 139778396418632
cop00 id is 139778396418632
cop11 id is 139778396418504
cop22 id is 139778396418440
origin1: [3] id is 139778396418696
cop00: [3] id is 139778396418696
cop11: [3] id is 139778396418696
cop22: [3] id is 139778396418376

7、zip和izip函数

Python三中无izip。

8、Python中的单、双、三引号

参考文章:Python中单引号,双引号,3个单引号及3个双引号的区别_邓无邪的博客-CSDN博客

str4_ = "We all know that 'A' and 'B' are two capital letters."
str5 = 'The teacher said: "Practice makes perfect" is a very famous proverb.'

>>> str1 = "List of name:\
...         Hua Li\
...         Chao Deng"
>>> print(str1)
List of name:        Hua Li        Chao Deng>>> str1 = """List of name:
... Hua Li
... Chao Deng
... """
>>> print(str1)
List of name:
Hua Li
Chao Deng>>> str1 = """
... List of name:
... Hua Li # LiHua
... Chao Deng # DengChao
... """
>>> print(str1)List of name:
Hua Li # LiHua
Chao Deng # DengChao

9、os.rm_dir() 删除空目录

os.remove() 删除具体文件

shutil.rmtree() 删除整个目录树

10、读写json

python读写json文件 - Bigberg - 博客园

json的数据结构对应的是python中的dict,因此写入和读出时都是json的格式。

读json方法:

 with open("../config/record.json",'r') as load_f:load_dict = json.load(load_f)print(load_dict)

写json方法:

 with open("../config/record.json","w") as dump_f:json.dump(load_dict,dump_f)

11、python topN 取 最大的N个数 或 最小的N个数

import numpy as npa = np.array([1,4,3,5,2])
b = np.argsort(a)
print(b)结果:[0 4 2 1 3] 如果既要得到位置,也要得到值,可以如下:sortLoc = np.argsort(predicted_vector)
sortVal = np.sort(predicted_vector)
import heapq
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(heapq.nlargest(3, nums)) # Prints [42, 37, 23]
print(heapq.nsmallest(3, nums)) # Prints [-4, 1, 2]

12、处理大量数据中打印省略的问题

对于Numpy数据:在输出print()位置前加入:

1 np.set_printoptions(threshold=np.inf)

pandas数据:分为行列的设置:

复制代码
1 #显示所有列
2 pd.set_option('display.max_columns', None)
3 #显示所有行
4 pd.set_option('display.max_rows', None)
5 #设置value的显示长度为100,默认为50
6 pd.set_option('max_colwidth',100)项目中使用的方式:1 pd.set_option('display.max_columns', 1000000)   # 可以在大数据量下,没有省略号
2 pd.set_option('display.max_rows', 1000000)
3 pd.set_option('display.max_colwidth', 1000000)
4 pd.set_option('display.width', 1000000)

13、Numpy数据类型转换astype,dtype

1、查看数据类型
In [11]: arr = np.array([1,2,3,4,5])In [12]: arr
Out[12]: array([1, 2, 3, 4, 5])// 该命令查看数据类型
In [13]: arr.dtype
Out[13]: dtype('int64')In [14]: float_arr = arr.astype(np.float64)// 该命令查看数据类型
In [15]: float_arr.dtype
Out[15]: dtype('float64')2、转换数据类型
// 如果将浮点数转换为整数,则小数部分会被截断
In [7]: arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.3221])In [8]: arr2
Out[8]: array([ 1.1   ,  2.2   ,  3.3   ,  4.4   ,  5.3221])// 查看当前数据类型
In [9]: arr2.dtype
Out[9]: dtype('float64')// 转换数据类型  float -> int
In [10]: arr2.astype(np.int32)
Out[10]: array([1, 2, 3, 4, 5], dtype=int32)3、字符串数组转换为数值型
In [4]: numeric_strings = np.array(['1.2','2.3','3.2141'], dtype=np.string_)In [5]: numeric_strings
Out[5]: array(['1.2', '2.3', '3.2141'], dtype='|S6')// 此处写的是float 而不是np.float64, Numpy很聪明,会将python类型映射到等价的dtype上
In [6]: numeric_strings.astype(float)
Out[6]: array([ 1.2, 2.3, 3.2141])

14、hypot()

math.hypot(x, y)np.hypot(x,y)

15、指定特定版本的Python(shebang的使用)

python - 如何告诉根进程使用anaconda python安装而不是/usr/bin/python? - IT工具网

16、中文编码指定使用utf-8

Python 中文编码 | 菜鸟教程21、Python可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)的概念

一文彻底搞懂Python可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)的概念 - 掘金在Python中可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)这几个概念是经常用到的,初学时对这几个概念也是经常混淆,现在是时候把这几个概念搞清楚了。 记住这个类,下文我们还会看到这个类的定义。 在类中定义了__iter__()方法的对象,…https://juejin.cn/post/6844903834381189127

22、matplotlib画图增加button、event回调函数

Python结合matplotlib添加按钮Button_EGNIR的博客-CSDN博客_matplotlib 按钮之前找matplotlib的按钮的资料,找了很久才找到可以看懂的,不知道是不是太简单了,所以才没什么人写。第一行buttonaxe = plt.axes([0.94, 0.03, 0.03, 0.03])用来设置按钮的位置。第一个为水平的值,第二个为竖直的值,后面两个表示按钮的大小第二行button1 = Button(buttonaxe, 'p2',color='khaki', hovercolor='yellow')用来创建按钮,并设置颜色以及鼠标放在按钮上时按钮的颜色。第三行button1.onhttps://blog.csdn.net/weixin_46477226/article/details/106398193事件处理及拾取 · Matplotlib 用户指南https://wizardforcel.gitbooks.io/matplotlib-user-guide/content/7.3.html(原)python中matplot中获得鼠标点击的位置及显示灰度图像 - darkknightzh - 博客园转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6182474.html 参考网址: http://matplotlib.org/examples/pylhttps://www.cnblogs.com/darkknightzh/p/6182474.htmlCapturing mouse click events with Python and OpenCV - PyImageSearchhttps://www.pyimagesearch.com/2015/03/09/capturing-mouse-click-events-with-python-and-opencv/Handle mouse events in Python - OpenCV - GeeksforGeekshttps://www.geeksforgeeks.org/handle-mouse-events-in-python-opencv/

Python 中的tips总结相关推荐

  1. python中append函数合并列表且列表内数字从高到低_35个高级Python知识点总结

    No.1 一切皆对象 众所周知,Java中强调"一切皆对象",但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function) ...

  2. python对excel某一列去重-python中怎么对dataframe列去重

    python中对已经生成的Series,怎样组合成DataFrame 如 a = Series([1,2,3]) b = Series([2,3,4]) 怎样将a b组合成一个DataFzip函数接受 ...

  3. Python中re(正则表达式)模块函数学习

    2019独角兽企业重金招聘Python工程师标准>>> Python正则表达式指南 今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的 ...

  4. python应用中调用spark_在python中使用pyspark读写Hive数据操作

    1.读Hive表数据 pyspark读取hive数据非常简单,因为它有专门的接口来读取,完全不需要像hbase那样,需要做很多配置,pyspark提供的操作hive的接口,使得程序可以直接使用SQL语 ...

  5. python和revit_如何在Python中产生新的RevitAPI对象

    通过Python节点可以调用RevitAPI的内容,那如何产生新的对象? 一.公开构造函数的类 通过查看RevitAPI可以看到:对于XYZ类给出了公开的API构造函数,如下图所示: (Tips:类的 ...

  6. 解惑(三)----- 深入理解Python中的self参数和__init__(self)方法--通过类比Java语言

    一.前言 在这里我想通过用Python和Java语言的类比来对Python中的self参数和__init__(self)方法做一个深入的解释.这样可以加深对self参数和__init__(self)方 ...

  7. 在Python中有效使用JSON的4个技巧

    Python has two data types that, together, form the perfect tool for working with JSON: dictionaries ...

  8. Python 中 with 用法详解

    浅谈 Python 的 with 语句:https://developer.ibm.com/zh/articles/os-cn-pythonwith/ python3,浅谈with的神奇魔法:http ...

  9. python iterable对象_如何理解Python中的iterable对象

    转载请注明出处:https://www.jianshu.com/u/5e6f798c903a [^*] 表示注脚,在文末可以查看对应连接,但简书不支持该语法. 首先,容器和 iterable 间没有必 ...

最新文章

  1. [node 工具] 用 Node.js 将 bugzilla 上的 bug 列表导入到 excel 表格在线版本之一(server 端)...
  2. YOLOv5-Lite 使用笔记
  3. ScriptManager控件声明的各个部分
  4. matlab调用python函数未定义函数类_从零学习Python—调用函数def用法(下)
  5. 让数组的左边全为奇数C语言,2015年全国计算机等级考试全真模拟考场_二级C语言试卷四.docx...
  6. Linux 终端操作之简明疾速指南(1)
  7. beyond compare类似软件_你用过最好用的截图软件是哪一款
  8. 看到别人的简历,mark一下。
  9. NBIOT(3)---NBIOT 移远BC28模块+stm32
  10. maven环境、本地仓储配置(下载安装)idea配置maven
  11. 为什么有的计算机没有ppt,电脑上没有ppt怎么办
  12. appium 切换上下文的时候报错
  13. 通讯录版本1.0到3.0简易版
  14. 电商直播风暴来了,AI虚拟偶像彻底革命李佳琦、薇娅?
  15. Java网络象棋游戏(功能版)
  16. JavaScript系列文章:变量提升和函数提升
  17. C语言 程序 素数圈圈
  18. win7系统提示计算机内存不足,Win7系统下提示内存不足的原因及解决方法
  19. css3动画动一次就停止,css - 在最后一帧停止CSS3动画
  20. python 大众 同城

热门文章

  1. CPU中的一级缓存,二级缓存,三级缓存
  2. DG 上安装PSU 26925576
  3. 阿小冷学计算机(3)
  4. Keepalived安装与配置
  5. Python金融数据挖掘 第八章 复习思考题1
  6. 微软的语音太逼真了,用来听小说舒服了
  7. 如何彻底删除QQ程序
  8. 8位bmp 原始裸格式数据,需要加上文件头+位图信息头+调色板+位图数据 才是bmp图像
  9. php人民币函数,PHP数字转人民币大写函数
  10. 金电联行程小龙:数智赋能驱动产业数字化转型