python自学笔记1

Python语言风格:pythonic

例如交换变量:python:x,y=y,x;即可;

Python能做什么?:爬虫,大数据,测试,web,AI,脚本处理。

Python是语言。跨平台。可以在Windows,Linux,macOS上运行,和Java语言一样,具有pvm(python 虚拟机);易于学习,相对于其他语言,的确容易学习;强大的三方类库;面向对象(是一种思想);泛型语言,弱类型;运行较慢,相对于c/c++,java;

语言分类:编译型语言(存在预编译的过程),解释型语言(动态语言,临时解释);但是严格区分这两种语言,已经不再合适了。不是所有的语言都是编译成机器码,而是中间码,例如c#,java。

Python,web开发:flask,django;

Python数据类型:

浮点数float:不区分单精度双精度,python是其他语言的双精度;

整数int:

整型运算:精度低的向精度高的转换,在除法时,/代表结果不丢失精度,float;//代表取整,int。

进制问题:0b:二进制;0o:八进制;0x:十六进制。前置表示;

>>> 0b11

3

>>> 0o4

4

>>> 0o12

10

>>> 0x12

18

>>>

Python进制转换:idle默认转换成10进制:

Bin();将其他进制转成二进制

>>> bin(12);

'0b1100'

>>> bin(0o12);

'0b1010'

>>>

int();转成10进制

hex();转成十六进制

oct();八进制

bool类型:归属于number类型,0为False;非0为True;>>> type(True);

>>> type(False);

>>> bool(4);

True

>>> bool(0.0);

False

//////////////并不只有数字可以和bool之间转换。

 

字符串长度为0,列表为空等等都是False;

>>> bool("True")

True

>>> bool("False")

True

>>> bool(None)

False

dgss字符串;[1,2]列表;{}

复数 23j,2+2j等等,主要是j

 

str:字符串,单引号,双引号,三引号,一定要成对出现

>>> type("1")

>>> "hhsdh'sd'dsd"

"hhsdh'sd'dsd"

>>> "let's go"

"let's go"

转义字符,但是不建议使用

三引号的使用

>>> type("1")

>>> "hhsdh'sd'dsd"

"hhsdh'sd'dsd"

>>> "let's go"

"let's go"

 

 

//print()函数会显示转义字符的效果,idle不会;

>>> "shgdh\nsadgh"

'shgdh\nsadgh'

>>> """ahsgdhg\nasd"""

'ahsgdhg\nasd'

>>> print("""ahsgdhg\nasd""");

ahsgdhg

asd

用r修饰的字符串代表原始字符串,即字符串看起来什么样,就是什么样!!

>>> print("hjhs\\nasgh");

hjhs\nasgh

>>> print(r"sads\naS");

sads\naS

>>> r"dsf\nsd"

'dsf\\nsd'

字符串的操作:

字符串拼接:>>> a="hello";

>>> b="world";

>>> a+b;

'helloworld'

获取单个字符:直接中括号[]下标实现。从0开始,也可以是负数,代表倒数第几个

>>> "hello"[2];

'l'

字符串的截取:

>>> a[0:4]

'abch'

>>> a[0:7:2];

'acel'

 

 

!!!!这种截取方式的第一个数字,代表起始未知,第二个代表结束未知(可以用负数表示),第三个数代表步长,默认是1,即连续截取;

第三个数是负数,要求第二个角标的位置在第一个的右侧;

第三个数为正数,要求第二个角标的位置在第一个的左侧;否则不会报错,但是达不到预期结果;

>>> a[0:-1];

'abchelloworldde'

>>> a[-1:0]

''

>>> a[0:-1]

'abchelloworldde'

>>> a[-1:0]

''

>>> a[1:-1];

'bchelloworldde'

>>> a[1:-1]

'bchelloworldde'

>>> a[1:0:-1]

'b'

>>> a[-1:-1]

''

>>> a[-1:0]

''

>>> a[-1:0:-1];

'feddlrowollehcb'

>>> a[1:1:-1]

''

>>> a[0:-1:-1]

''

>>> a[::-1]

'feddlrowollehcba'

>>> a[1:8:-1]

''

>>> a[1:8:1]

'bchello'

>>> a[8:1:-1]

'wollehc'

>>> a[0:]

'abchelloworlddef'

>>> a[0:-1:-1]

''

>>> a[-1:0:-1]

'feddlrowollehcb'

列表:内部元素的多样性,可以混用;list

列表可以嵌套列表(一般不叫二维数组,虽然是一个样子)

列表可以像字符串一样,直接通过下标获取相应位置的元素,返回的不是列表,而是单个元素,类型也由元素自身确定,也可以截取,但返回的一定是列表,不管元素的个数是多少。

列表和一个整数的乘,会得到几个列表的拼接

>>> a=[1,"324","3",True,45,5]

>>> a[::-1]

[5, 45, True, '3', '324', 1]

>>> type(a[2])

>>> a[1][2]

'4'

>>> type(a[1][2])

>>> 3*a

[1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5]

>>> a*a

Traceback (most recent call last):

  File "", line 1, in

TypeError: can't multiply sequence by non-int of type 'list'

>>> a*3

[1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5]

>>>

列表和元组的拼接是无要求的,

 

元组 tuple,()表示,需要注意单个元素的表示

但是,因为元组的表示用()表示,所以,当元素个数只有一个的时候,应当在元素后面加一个“,”,用来表明这是一个元组,那么怎么表示空元组呢?直接()即可

 

 

>>> y=("1","2")

>>> x+y

(1, 2, '1', '2')

>>> y=("c",)

>>> x+y

(1, 2, 'c')

>>> type(x)

>>> type(())

>>> type((,))

SyntaxError: invalid syntax

本质上来说,字符串,列表,元组都是序列,序列的操作:

X[i],可以直接获得相应元素

切片特性(截取操作)

x in X,返回bool

Len()函数,求序列长度

max()函数,求最大值

min()函数,求最小值//根据字面值,或者ascii码值

ord()函数,可以将字符转成相应的ASCII码值

 

>>> x=[1,2,3,"hello",True]

>>> 2 in x

True

>>> 3 not in x

False

>>> len(x)

5

>>> len("qwertyy")

7

>>> max((1,2,34,5))

34

>>> max("sasdf")

's'

>>> min(dsfa)

Traceback (most recent call last):

  File "", line 1, in

    min(dsfa)

NameError: name 'dsfa' is not defined

>>> min("aifhjsd")

'a'

>>> ord("asd")

Traceback (most recent call last):

  File "", line 1, in

    ord("asd")

TypeError: ord() expected a character, but string of length 3 found

>>> ord("c")

99

 

 

 

 

/////////////////////////////////////////////////////////////////////////////

集合 set {},无序,不重复

运算:

--  求差集

&  求交集

|  求并集

 

如何定义空的set?

>>> type({});

               //并非这样定义

>>> type(set())

//正确定义

 

字典:

>>> {"hello":"world",3:[2,3,4],1:(2,True),"java":{1,3}}

{'hello': 'world', 3: [2, 3, 4], 1: (2, True), 'java': {1, 3}}

如何访问呢?

>>> x={"hello":"world",3:[2,3,4],1:(2,True),"java":{1,3}}

>>> x["hello"]

'world'

>>> x[3]

[2, 3, 4]

通过建访问!!!类似于set,键不能重复,key的定义要求不可变,int ,str

 

关于可变性:

List 可变

Tuple 不可变

 

 

 

 

 

 

 

 

 

 

值类型和引用类型

值类型 number(int bool float) tuple  str   不可改变

引用类型 list  set  dict   可改变

 

>>> l=[1,"3","4",True]

>>> l.append(2)

>>> l

[1, '3', '4', True, 2]

>>> l.remove("3")

>>> l

[1, '4', True, 2]

>>> l.replace(1,"mmd")

Traceback (most recent call last):

  File "", line 1, in

    l.replace(1,"mmd")

AttributeError: 'list' object has no attribute 'replace'

>>> t=(1,2,3)

>>> t.append(4)

Traceback (most recent call last):

  File "", line 1, in

    t.append(4)

AttributeError: 'tuple' object has no attribute 'append'

 

 

 

关于运算:次方 **  例如x的y次方    x**y

 

 

python不支持自增自减

>>> a=12;

>>> b=2;

>>> a+=b;

>>> a

14

>>> a-=b;

>>> a

12

>>> a*=b;

>>> a

24

>>> a/=b;

>>> a

12.0

>>> a//=b

>>> a

6.0

>>> a%=b;

>>> a

0.0

 

比较运算符:==, !=  >  <  <=   >=  结果是bool

>>> 1==1

True

>>> 1=="1"

False

>>> 1>1

False

>>> bool({})

False

>>> bool("flase")

True

 

字符或者字符串的比较,逐一比较,根据ASCII码值

列表的比较  同字符串

元组的比较,同字符串

 

逻辑关系运算符  and  or  not

 

成员运算符  in   not in

 

>>> a={1:"hello",2:"world",3:True}

>>> True in a

True

>>> "hello" in a

False

>>> 1 in a

True

>>> a.append(4:False);

SyntaxError: invalid syntax

>>> False in a

False

>>> a={1:"hello",2:"world",3:False}

>>> True in a

True

>>> False in a

False

>>> 3 in a

True

>>> 2 in a

True

>>> 1 in a

True

 

//对于字典来说,in 指的是 key

 

Is  和 == 的比较:

== 比较值

is 比较身份是否一样,其实就是比较内存地址 id(x)  表示x的地址

>>> a={1,2}

>>> b={2,1}

>>> a==b

True

>>> a is b

False

>>> id(a)

1911399348264

>>> id(b)

1911399346472

 

类型判断  

>>> isinstance (i,int)

True

 

扩展用法:instance(i,(int,list,str));等等

 

对象的三个基本属性:type  value  id

 

位运算符:&   |   ^   ~   <<   >>

你可能感兴趣的:(python学习)