Python笔记之a = [0]*x格式的含义及说明

目录
  • python a = [0]*x格式的含义
  • python使用技巧与爬过的坑
    • 1 dict的使用
    • 2 numpy
    • 3 文件操作

python a = [0]*x格式的含义

a为一个含有x个字符串的列表

例如:

import sys
a = "12352523452334"
num = len(a)
k = int(num/3)
print(k)
sub = [0]*k
for i in range(k):
    sub[i] = a[i*3:i*3+3]
    isString = isinstance(sub,list)
    print(isString)
    print(sub[i])
print(len(sub))

4
True
123
True
525
True
234
True
523
4

python使用技巧与爬过的坑

1 dict的使用

python中的字典应该是许多朋友常用的一种数据结构,其数据结构如下:

{key: value}

这里主要列几个字典使用的技巧。

1.1 dict的删改查

其实对于dict的删改查都需要用到查询,比如改,就是先查询到某个键值对,然后再做更改操作。

可能许多初学者对于字典的访问是如下几种方式:

for k, v in d.items():
    balabala
for v in d.values():
    balabala

其实这是一种特别浪费性能的操作方式,因为python中的dict是通过Hash方式来查询键的。简单来说就是查询键的时间复杂度是O ( 1 ) O(1)O(1),而查询值的时间复杂度是O ( n ) O(n)O(n)。放在代码里面来说,就是:

for k in d.keys():

这种查询方式是O ( 1 ) O(1)O(1)的时间复杂度,而:

for k, v in d.items():

或者:

for v in d.values():

是O ( n ) O(n)O(n)的时间复杂度。

所以为了节省查询时间,我们如果要对值进行操作,都是如下:

for k in d.keys():
    val = d[k]

而python三大数据结构:列表、元组、字典,就只有字典的键的查询是O ( 1 ) O(1)O(1)的时间复杂度,其余的都是O ( n ) O(n)O(n)的时间复杂度。

1.2 dict的键

既然上面已经说到了dict的键是hash查询的,所以dict的键有严格的要求,就是hashable的数据才能作为dict的键。

那么何为hashable?简单来说,就是在运行过程中不可修改的。

就比如列表就是可以修改的,因为列表可以随时进行append等操作,字典也是可以修改的,比如随时可以进行pop等操作。

那么什么是hashable的呢?常用的字符串、数字这些都可以,还有一个数据结构是hashable的,就是元组,因为元组是无法被修改的。所以当你想要存储一组数据作为键值的时候,可以考虑将这组数据转换成元组,毕竟list和dict是可以相互切换的嘛。

2 numpy

2.1 array

这是我最近编码过程中遇到的一个坑,就是array的赋值操作。我们通常的赋值操作就是:

a = b

但是对于numpy的ndarray对象,这种赋值不仅会将值赋过去,还会把内存地址赋值过去,比如如下代码:

import numpy as np
a = np.array([1, 2, 3])
print("id(a):", id(a))
b = a
print("id(b):", id(b))
print(id(a) == id(b))

输出结果如下:

id(a): 2721844244768
id(b): 2721844244768
True

也就是说,如果你只是使用a = b这种操作,那么你在对b进行操作的时候也会更改a,但是如果在某个使用场景,你需要对b进行操作,但是不改变a,那么要用如下的代码(b = a.copy()):

import numpy as np
a = np.array([1, 2, 3])
print("id(a):", id(a))
b = a.copy()
print("id(b):", id(b))
print(id(a) == id(b))

输出结果:

id(a): 1549742256336
id(b): 1549742141968
False

3 文件操作

3.1 pickle

pickle是大家常用的一个文件,最大的优点在于什么东西存储进去,就可以读取什么东西出来。

pickle是以二进制方式进行存储与读取的,比如下面的栗子:

import pickle
with open(filepath_1, 'rb') as f:
    file = pickle.load(f)
with open(filepath_2, 'wb') as f:
    pickle.dump(file, f)

但是可能有许多初学者会在写入pickle的时候选择追加方式写入(比如爬虫中断等情况),但是这种方式是不可行的。因为pickle是二进制操作,如果以追加方式写入,那么你在读取的时候只能读取到第一次写入的内容,之后的内容是无法读取的。

那么在这种有可能因为中断等原因需要一直添加内容到pkl里面,我比较推荐分成不同份的文件进行保存,既可以保证文件能够正常的读取,也不用担心因为程序中断而导致需要重新执行的问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python编码总结(编码类型、格式、转码)

    本文详细总结了python编码.分享给大家供大家参考,具体如下: [所谓unicode] unicode是一种类似于符号集的抽象编码,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储.也就是它只是一种内部表示,不能直接保存.所以存储时需要规定一种存储形式,比如utf-8和utf-16等.理论上unicode是一种能够容纳全世界所有语言文字的编码方案.(其他编码格式不再多说) [所谓GB码] GB就是"国标"的意思,即:中华人民共和国国家标准.GB码是面向汉字的编码,包括

  • python入门之基础语法学习笔记

    Python 中文编码 Python 文件中如果未指定编码,在执行过程会出现报错: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了. Python 标识符 在 Python 里,标识符由字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中

  • python入门学习笔记分享

    一.python的基础语法 1.行连接的方法是最后加上一个'\' 2.注释:多行注释三引号,#行注释:三引号定义的字符串原样输出(保存原格式) 3.I/O语句:用逗号分隔零个或多个表达式.(+)只能连接相同的数据类型.input的返回值永远字符串格式(要需要什么格式需要强制转换).格式输出str.rjust()str靠右:str.ljust() str靠左:str.center()字符串居中:str.format()方法,{}和:来替代%的方式:位置参数(索引0开头)(*列表形式) 4.填充方式

  • Python学习笔记(二)基础语法

    学习Python,基本语法不是特别难,有了C的基本知识,理解比较容易.本文的主要内容是Python基础语法,学完后,能熟练使用就好.(开发环境依然是Python2.7,简单使用)一,基本知识1,不需要预先定义数据类型(此说法值得商榷,姑且这么说吧),这是与其他语言的最大不同(如C,C++,C#,Delphi等) 复制代码 代码如下: >>> x=12 >>> y=13 >>> z=x+y >>> print z 25 注意:尽管变量不

  • Python笔记之a = [0]*x格式的含义及说明

    目录 python a = [0]*x格式的含义 python使用技巧与爬过的坑 1 dict的使用 2 numpy 3 文件操作 python a = [0]*x格式的含义 a为一个含有x个字符串的列表 例如: import sys a = "12352523452334" num = len(a) k = int(num/3) print(k) sub = [0]*k for i in range(k):     sub[i] = a[i*3:i*3+3]     isString

  • python处理文本文件实现生成指定格式文件的方法

    本文所述实例为Python处理文本文件并生成指定格式文件的方法,具体实现功能代码如下所示: import os import sys import string #以指定模式打开指定文件,获取文件句柄 def getFileIns(filePath,model): print("打开文件") print(filePath) print(model) return open(filePath,model) #获取需要处理的文件 def getProcFile(path): return

  • python笔记:mysql、redis操作方法

    模块安装: 数据操作用到的模块pymysql,需要通过pip install pymysql进行安装. redis操作用的模块是redis,需要通过pip install redis进行安装. 检验是否安装成功:进入到Python命令行模式,输入import pymysql. import redis ,无报错代表成功: mysql操作方法如下: 查询数据:fetchone.fetchmany(n).fetchall() import pymysql #建立mysql连接,ip.端口.用户名.密

  • python笔记(1) 关于我们应不应该继续学习python

    以前面试的时候会被问到,linux熟不熟呀?对于这种问题:我总会尴尬地回答,"额..了解一点". 然而,我大学毕业的时候,连linux的虚拟机都没装过,更别提系统熟不熟悉了.虽然我了解一点这个系统可以完全通过命令来操作.后来工作了,有时候写点代码,svn提交上去,服务器是Linux的,自己也是在windows上跑跑客户端.记得有个项目,要求用shell来启动java程序,你知道那时候我是怎么做的吗?把他们的shell拿来,问哪几个地方要改的,然后改下要启动java类的路径.ok了,完全

  • python脚本实现数据导出excel格式的简单方法(推荐)

    实习期间,服务器的一位师兄让我帮忙整理一下服务器的log数据,最终我用Python实现了数据的提取并将其用Excel格式导出.下面是我Python实现的源码,可以自动遍历某一文件目录下的所有文本文件,并将总的数据导出到Excel文件中,导出为Excel格式这样就比较方便统计了. //实现将目录下所有文件格式为.txt的文件进行遍历统计,如果是别的格式直接将下面的.txt改为你所需要的格式后缀就可以了,比较方便. //过程就是先将所有的文件中的内容提取出来写入到一个新文件中,然后再从新文件中提取数

  • python将ansible配置转为json格式实例代码

    python将ansible配置转为json格式实例代码 ansible的配置文件举例如下,这种配置文件不利于在前端的展现,因此,我们用一段简单的代码将ansible的配置文件转为json格式的: [webserver] 192.168.204.70 192.168.204.71 [dbserver] 192.168.204.72 192.168.204.73 192.168.204.75 [proxy] 192.168.204.76 192.168.204.77 192.168.204.78

  • Python用sndhdr模块识别音频格式详解

    本文主要介绍了Python编程中,用sndhdr模块识别音频格式的相关内容,具体如下. sndhdr模块 功能描述:sndhdr模块提供检测音频类型的接口. 唯一一个API sndhdr模块提供了sndhdr.what(filename)和sndhdr.whathdr(filename)两个函数.但实际上它们的功能是一样的.(不知道多写一个的意义何在,what函数在内部调用了whathdr函数并把数据完完整整地返回) 在之前的版本,whathdr函数返回元组类型的数据,在Python3.5版本之

  • Python实现将doc转化pdf格式文档的方法

    本文实例讲述了Python实现将doc转化pdf格式文档的方法.分享给大家供大家参考,具体如下: #-*- coding:utf-8 -*- # doc2pdf.py: python script to convert doc to pdf with bookmarks! # Requires Office 2007 SP2 # Requires python for win32 extension import sys, os from win32com.client import Dispa

  • Python复制Word内容并使用格式设字体与大小实例代码

    简介 网上流传的部分可以百度关键词"Python"和"word"后查看文章学习,以下内容为个人实践,修正了不能运行出错的情况. 代码示例 import win32com from win32com.client import Dispatch,constants w = win32com.client.Dispatch('Word.Application') # 或者使用下面的方法,使用启动独立的进程: # w = win32com.client.DispatchE

  • 利用python将json数据转换为csv格式的方法

    假设.json文件中存储的数据为: {"type": "Point", "link": "http://www.dianping.com/newhotel/22416995", "coordinates": [116.37256372996957, 40.39798447055443], "category": "经济型", "name": &qu

随机推荐