1、sort和sorted
(1)sort:会直接修改原始列表的序列,只是排序,不去重。
>>> a=[2,5,7,8,3,5,1,3,9,6,2]
>>> a.sort()
>>> a
[1, 2, 2, 3, 3, 5, 5, 6, 7, 8, 9]
     
(2)sorted:不会修改原始列表的序列,只是排序,不去重。
>>> a=[2,5,7,8,3,5,1,3,9,6,2]
>>> sorted(a)
[1, 2, 2, 3, 3, 5, 5, 6, 7, 8, 9]
>>> a
[2, 5, 7, 8, 3, 5, 1, 3, 9, 6, 2]
2、remove:会直接把原始文件中的元素删除。这里需要注意一下,当循环删除一个元素时,列表中的元素会前移
当列表是唯一的,或者是无连续要删除的元素时,可采用循环删除,这不会有问题,但是,当有连续要删除的元素时,则会出问题。
比如:把a中所有的2删除,结果发现,连续的要删除的2出现时,有的2并没有被删除,这是因为,remove是原始列表修改的,并且,当删除一个元素后,列表中该元素后面的所有元素会前移。
>>> a=[1,2,2,2,2,3,2,2,2,3,4,5,3,6,8,2,3,2,5]
>>> for aa in a:
    if aa==2:
        a.remove(aa)
>>> a
[1, 3, 2, 3, 4, 5, 3, 6, 8, 2, 3, 2, 5]
 
正确:可采用a[:],a[:]是a列表元素的复制,或者采用倒序的方式进行删除,这里用a[:]进行循环删除。
>>> for aa in a[:]:
    if aa==2:
        a.remove(aa)
 
>>> a
[1, 3, 3, 4, 5, 3, 6, 8, 3, 5]
3、list和set都非原始列表修改
>>> a=[2,3,4,5]
(1)     >>> type(a)
<type 'list'>
>>> set(a)
set([2, 3, 4, 5])
>>> type(a)
<type 'list'>
 
4、list(set(a))这是set方法和list方法的联合使用,可以实现将列表a中的元素进行去重,但是并不会进行排序。
>>> a=[1,2,2,2,3,4,5,3,6,8,2,3,2,5,2,7,3]
>>> b=list(set(a))
>>> b
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a
[1, 2, 2, 2, 3, 4, 5, 3, 6, 8, 2, 3, 2, 5, 2, 7, 3]
5、(intersection)交集、(union )并集、( difference)差集,只有set类型的列表才可以用这些方法。
         >>> a=[2,3,4,5]
>>> b=[2,4,7,8]
(1) (intersection)交集:既在a中也b中的元素
>>> c=set(a).intersection(set(b))
>>> type(c)
<type 'set'>
>>> list(c)
[2, 4]
 
(2)(union )并集:在a中的所有元素和b中所有元素的集合,并且去重。
          >>> c=set(a).union(set(b))
>>> type(c)
<type 'set'>
>>> list(c)
[2, 3, 4, 5, 7, 8]
 
(3) ( difference)差集:在a中的元素,但是不在b中的元素
>>> c=set(a).difference(set(b))
>>> type(c)
<type 'set'>
>>> list(c)
[3, 5]
 
5、以r或者R开头,表示该字符串是(非转义)原始字符串,比如不加r的字符串,和加r的字符串在文档中的显示是不一样的。
(1)不加r:则其中的特殊字符,有保留自己独特的特性,比如\n表示换行,\t表示Tab。以r字符开头的常用于正则表达式。
>>> a="good\nbye\terror"
>>> fn=open(r"E:\tempData.txt","w")
>>> fn.writelines(a)
>>> fn.close()
(2)加r:一些特殊字符,比如\n,\t,当加r表示时,会将这些特殊字符表示为普通字符,而不会保留特殊字符独有的特性。
>>> a=r"good\nbye\terror"
>>> fn=open(r"E:\tempData.txt","w")
>>> fn.writelines(a)
>>> fn.close()
6、以u或者U开头的字符串表示unicode字符串,Unicode是书写国际文本的标准方法。如果你想用非英语写文本,那么你需要有一个支持Unicode的编辑器。
这部分信息是摘录别人的,仅供参考

今天看了一个说法,说是入坑windows程序开发,必先掌握文字的编码和字符集知识。本博客就整理下信息存储和字符编码的相关知识。 
一.位: 
计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0”或一个“1”叫一位。 
二.字节 
字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位,8个二进制位组成1个字节。在ASCII码中,一个标准英文字母(不分大小写)占一个字节位置,一个标准汉字占二个字节位置。 
三.字符 
字符是指计算机中使用的文字和符号,比如“1、2、3、A、B、C、~!·#¥%…*()+”等等。 
四.ASCII码 
先从最简单的ASCII说起吧,这个大家也熟悉:全名是American Standard Code for Information Interchange, 叫做“美国信息交换标准码”。ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。ASCII码是目前最普及的一种字符编码,它扎根于我们的互联网,操作系统,键盘,打印机,文件字体和打印机等。ASCII表如下:


图片来源百度百科

当然,从这个名字美国信息交换标准码来看,ASCII码只适用于美帝,要是用在美帝之外的国家,就不能满足需求了。 
ANSI码 
ANSI编码是一种对ASCII码的拓展:ANSI编码用0x00~0x7f 范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。也就是说,ANSI码仅在前126个与ASCII码相同,之后的字符全是某个国家语言的所有字符。值得注意的是,两个字节最多可以存储的字符数目是2的16次方,即65536个字符,这对于一个语言的字符来说,绝对够了。还有ANSI编码其实包括很多编码:中国制定了GB2312编码,用来把中文编进去另外,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准。受制于当时的条件,不同语言之间的ANSI码之间不能互相转换,这就会导致在多语言混合的文本中会有乱码。 
Unicode编码 
为了解决不同国家ANSI编码的冲突问题,Unicode应运而生:如果全世界每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。 
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。 
但是问题在于,原本可以用一个字节存储的英文字母在Unicode里面必须存两个字节(规则就是在原来英文字母对应ASCII码前面补0),这就产生了浪费。那么有没有一种既能消除乱码,又能避免浪费的编码方式呢?答案就是UTF-8! 
UTF-8编码 
这是一种变长的编码方式:它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,如此一来UTF-8编码也可以是为视为一种对ASCII码的拓展。值得注意的是unicode编码中一个中文字符占2个字节,而UTF-8一个中文字符占3个字节。从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换。 
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
7、列表修改,
(1)b=a是浅复制,当修改b时,a会改变,同理,改变a时,b也会改变。因为a和b指向的是同一个地址
>>> a=[1, 2, 2, 2, 3, 4, 5, 3, 6, 8, 2, 3, 2, 5, 2, 7, 3]
>>> b=a
>>> for bb in b:
    if bb==2:
        b.remove(bb)
 
 
>>> b
[1, 3, 4, 5, 3, 6, 8, 3, 5, 2, 7, 3]
>>> a
[1, 3, 4, 5, 3, 6, 8, 3, 5, 2, 7, 3]
 
(2)当对b=a[:],就相当于对a进行了深度复制,a和b指向的是不同的地址。
>>> a=[1, 2, 2, 2, 3, 4, 5, 3, 6, 8, 2, 3, 2, 5, 2, 7, 3]
>>> b=a[:]
>>> for bb in b:
    if bb==2:
        b.remove(bb)
 
>>> b
[1, 3, 4, 5, 3, 6, 8, 3, 5, 2, 7, 3]
>>> a
[1, 2, 2, 2, 3, 4, 5, 3, 6, 8, 2, 3, 2, 5, 2, 7, 3]
 
(3)b=a[n:],a的后n个元素深复制给了b,b和a的后部分元素是在不同的列表中,,并且不能对a的部分元素进行排序。
比如a[n:].sort()就是错误的。
 
(4)b和a指向了同一个地址,因此使用任何的函数remove,insert方法进行操作时,b和a的元素会同时改变,但是,当给b重新赋值时,则对b的改变,不会影响到a,同时,对a的变化也不会影响到b,因为经过重新赋值,a和b已经是不同的列表和值了。
>>> a=[3,5,3]
>>> b=a
>>> b=[1,3]
>>> a
[3, 5, 3]
>>> b
[1, 3]
8、跳出循环,break是结束整个循环,在循环中用的比较多,无论是for还是while中。而continue是结束本次循环,在复杂循环体中用的比较多。
(1)break
>>> for word in "Python":
    if word == "h":
        continue
    print "current word :",word
 
current word : P
current word : y
current word : t
current word : o
current word : n
 
当多层for循环时,则break只是跳出了自己最内层的循环,而不会跳出外层循环。
>>> a =[[1, 2, 3, 4], [6, 7, 8, 4], [5, 3, 8, 5]]
>>> for aa in a:
    for aaa in aa:
        if  aaa==8:
            print aaa
            break
        else:
            print "good",str(aaa)
 
 
good 1
good 2
good 3
good 4
good 6
good 7
8
good 5
good 3
8
(2)continue
>>> for word in "Python":
    if word == "h":
        break
    print "current word :",word
 
current word : P
current word : y
current word : t
 
9、列表推导:列表推导是从中括号的最左边的for开始,然后依次写语句。
(1)
>>> a=[x*x for x in range(10) if x % 3==0]
>>> a
[0, 9, 36, 81]
 
类似于:
for x in range(10)
    if x % 3==0
          x*x
(2)
>>> a=[3,5,6,8]
>>> b=[4,5,7,9]
>>> [(x,y) for x in a for y in b if x==y]
[(5, 5)]
类似于
for x in a
     for y in b
          if x==y
               (x,y)
 
10、字典:字典中的键是唯一的,而值不是唯一的,这是字典很重要的一个性质,需要特别注意,在使用时,要检查自己的数据是否适合使用字典。
(1)直接创建字典
dictexample = {"A":34,"B":98,"C":67}
(2)dict创建
items=[("A",78),("B",89)]
d=dict(items)
 
d=dict("A"=89,"B"=90)
(3)
不能给空的列表直接赋值,但是可以给空的字典直接赋值
>>> x[2]=7
 
Traceback (most recent call last):
  File "<pyshell#222>", line 1, in <module>
    x[2]=7
IndexError: list assignment index out of range
 
>>> x={}
>>> x[2]=78
>>> x
{2: 78}
 
11、字典是无序的,字典的本质是hsah表,hsah表的数据结构是无序的。
>>> a=dict([("a",-1),("b",9),("c",3)])
>>> a
{'a': -1, 'c': 3, 'b': 9}
 

12、lambda匿名函数:主要是为了使代码更简洁,不会带来程序运行效率的提高,若是可以使用for...in...if来完成,尤其是包含循环时,则不建议用lambda。
(1)基础语法
>>> g= lambda x:x+1  (x相当于参数)
>>> g(1)
2
类似于下列函数
 
>>> def g(x):
    return x+1
>>> g(1)
2
(2)匿名函数常伴随filter,map,reduce使用。filter\map\reuce(function,foo) 这三个方法也可以用于其他的函数,function可以是自定义的函数,标准函数,匿名函数
>>> foo=[5,6,2,3,16,9,4,7,25]
1>filter:过滤
>>> filter(lambda x:x%3==0,foo)
[6, 3, 9]
类似于
>>> [x for x in foo if x%3==0]
[6, 3, 9]
2>map:对列表中的元素进行操作
>>> map(lambda x:x*2,foo)
[10, 12, 4, 6, 32, 18, 8, 14, 50]
>>> [x*2 for x in foo]
[10, 12, 4, 6, 32, 18, 8, 14, 50]
3>reduce:从例子中可以发现,(1,3)先作为参数进行f计算,得到了13,然后13和列表的下一个元素5作为x和y元素进行计算,然后返回了135。
>>> def fn(x,y):
    return x*10+y
 
>>> reduce(fn,[1,3,5,7,9])
13579
 
 
 
 

易忽视的Python知识点的更多相关文章

  1. python 知识点补充

    python 知识点补充 简明 python 教程 r 或 R 来指定一个 原始(Raw) 字符串 Python 是强(Strongly)面向对象的,因为所有的一切都是对象, 包括数字.字符串与 函数 ...

  2. python知识点, float不能用 != 判断

    python知识点链接:https://github.com/taizilongxu/interview_python 搜索:python最佳事件 书单:http://lucida.me/blog/d ...

  3. Python知识点汇总

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  4. 一个简单、易用的Python命令行(terminal)进度条库

    eprogress 是一个简单.易用的基于Python3的命令行(terminal)进度条库,可以自由选择使用单行显示.多行显示进度条或转圈加载方式,也可以混合使用. 示例 单行进度条 多行进度条 圆 ...

  5. 零基础Python知识点回顾(一)

    如果你是小白,建议只要安装官网的python-3.7.0-amd64.exe 然后在电脑cmd命令提示符  输入检查是否已经安装pip,一般安装了python都会有的. >pip         ...

  6. ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点

    在做WPFMVVM中经常会遇到一些Model.ViewModel的属性添加添加私有字段和更改通知方法来支持Binding. 比如把: public class Test {      public s ...

  7. Python知识点复习

    一.列表1.创建一个文件birthday.py,假设你要祝某人生日快乐!首先将年龄存储在变量age中,将姓名存储在变量name中,让程序输出类似“阿明,23岁生日快乐!” 例如:假设你要祝某人生日快乐 ...

  8. python知识点总结以及15道题的解析

    先看知识点总结 一.序列操作符x in s 如果x是列表s的元素,返回True,否则Falses + t 连接两个序列s和ts*n或者n*s 将序列s复制n次s[i] 返回s中第i元素s[i:j]或s ...

  9. 给小白整理的一篇Python知识点

    1.基本概念 1.1 四种类型 python中数有四种类型:整数.长整数.浮点数和复数. python中数有四种类型:整数.长整数.浮点数和复数. 整数, 如 1 长整数 是比较大的整数 浮点数 如 ...

随机推荐

  1. error: 'retain' is unavailable: not available in automatic reference counting. 解决办法

    报错原因是 项目使用的是ARC,但是有非ARC代码. 项目中要混合使用ARC和非ARC. 解决: target -> Build Phases -> Compile Sources 双击报 ...

  2. 内嵌tomcat最简单用法

    maven项目引入内嵌tomcat依赖 <dependency> <groupId>org.apache.tomcat.embed</groupId> <ar ...

  3. Thread类中start()方法喝run()方法有什么不同?

    答:当调用start()方法时会启动一个新创建的线程,然后在start()内部调用run()方法.这和直接调用run()方法不同.直接调用run()方法只是在原来的线程中调用,没有创建新的线程.只有调 ...

  4. IRP小结 0x01 IRP & IO_STACK_LOCATION(结合WRK理解)

    写博客整理记录一下IRP相关的知识点,加深一下印象. 所有的I/O请求都是以IRP的形式提交的.当I/O管理器为了响应某个线程调用的的I/O API的时候,就会构造一个IRP,用于在I/O系统处理这个 ...

  5. ShellExecute, WinExec与CreateProcess

    0x01  ShellExecute ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制.  函数原型: Shel ...

  6. xenserver添加磁盘后挂载为本地存储库并且删除

    方法一: 1.1:查看磁盘列表 fdisk -l [root@xenserver ~]# fdisk -l Disk /dev/sdb: 7999.4 GB, 7999376588800 bytes, ...

  7. Scrapy的piplines.py存储文件和存储mongodb

    一.将数据保存到文件 1.piplines.py文件 import json class TencentPipeline(object): def open_spider(self,spider): ...

  8. DevExpress v18.2新版亮点——Reporting篇(一)

    行业领先的.NET界面控件——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Reporting v18.2 的新功能,新版3 ...

  9. BluePrism初尝

    由于对工作的需求,现在开始接触了RPA. RPA是什么?第一次看见这个名词,我脑海里只有RPG的概念.一番查询,才知道是Robotic Process Automation的英文缩写,机器人流程自动化 ...

  10. mysql字段默认值不生效的问题解决(上)

    在项目中使用mybatis做为持久层框架,mysql数据库.项目上线前,DBA要求我们将每张数据库表中的字段都设置默认值和not null.之前项目中有一些insert语句是将表中所有字段都列出来,然 ...