python学习入门细节知识点
|
python入门细节 相除后的类型 type(2/2) float type(2//2) int 双斜杠是整除,出来的类型是int。单斜杠的出来的是float类型。 进制表示和转换 进制表示: 二进制:0b 八进制:0o 十六进制:0x 进制转换: 转换为二进制:bin() 转换为八进制:oct() 转换为十进制:int() 转换为十六进制:hex() 转换为布尔类型:bool() 布尔类型 布尔类型转换:bool() 布尔类型属于数字这个基本数据类型里面只要是非零的数字,bool类型的值为True 对于字符串,布尔类型为True,除了空字符串 bool值为False: bool(0) bool('') 中间没有空格 bool([]) bool({}) bool(None) bool(NoneType) bool(set{}) 多行字符串 三个引号可以再IDLE下回车不会执行换行。print函数可以输出n这样的反义字符。 单个引号想回车换行可以再前面加上字符即可。
'''
sadasdj
adas
'''
Out[1]: 'nsadasdjnadasn'
'asda
File "<ipython-input-2-6af9d7d5e65d>",line 1
'asda
^
SyntaxError: EOL while scanning string literal
'asdd
adsad
sad'
Out[3]: 'asddadsadsad'
print('asdansadan')
asda
sada
'''
asdan
'''
Out[5]: 'nasdann'
原始字符串 原始字符串在print时只是输出里面的字符,不考虑反义之类的,小心r大写R都没有关系。
print(r'c:nsdansds')
c:nsdansds
print(r'let's go')
File "<ipython-input-3-a81b31c0c433>",line 1
print(r'let's go')
^
SyntaxError: invalid syntax
字符串的运算 1.字符串的'+'和'*' "hello"+"world" Out[1]: 'helloworld' "hello"*3 Out[2]: 'hellohellohello' 2.获取字符串里的字符 "hello world"[0] Out[3]: 'h' "hello world"[-1] Out[4]: 'd' # 包括左面但是不包括右面 "hello world"[0:4] Out[5]: 'hell' "hello world"[0:-1] Out[6]: 'hello worl' # 超出长度时会按字符串最大的长度进行截取 "hello world"[0:20] Out[7]: 'hello world' # 没有右边的值的时候,表示直接输出到末尾 "hello world"[6:] Out[8]: 'world' # 负数在冒号前面的时候 "hello world"[-4:] Out[9]: 'orld' python表示序列的方式 1.列表(list) 列表中的元素可以是任意类型的组合,比如列表的嵌套,布尔类型,字符串等等。 1.1 基本操作 1.1.1 基本选取(切片) ["新月打击","苍白之瀑","月之降临","月神冲刺"] Out[10]: ['新月打击','苍白之瀑','月之降临','月神冲刺'] ["新月打击","月神冲刺"][0] Out[11]: '新月打击' ["新月打击","月神冲刺"][0:2] Out[12]: ['新月打击','苍白之瀑'] ["新月打击","月神冲刺"][-1:] Out[13]: ['月神冲刺'] a = [1,2,3,4,5,6,7,8] print(a[0:3]) print(a[0:len(a):2]) print(a[len(a):0:-2]) [1,3] [1,7] [8,2] #可以看到,切片操作很简单,第二个冒号后面的数字可以看作是步长。注意负数时的用法。 可以看到,当没有冒号的时候,单个选取出的是元素的类型。但是当有冒号的时候,选取出的是序列的类型。这里需要注意 1.1.2 列表的相加和乘法 ["新月打击","月神冲刺"]+['虚弱','点燃'] Out[14]: ['新月打击','月神冲刺','虚弱','点燃'] ['虚弱','点燃']*3 Out[15]: ['虚弱','点燃','点燃'] 1.1.3 判断元素是否存在 运用in和not in即可 3 in [1,4] Out[21]: True 3 not in [1,4] Out[22]: False 1.1.4 计算长度,最大小值
len([1,3])
Out[23]: 3
len("hesadad")
Out[24]: 7
max([1,6])
Out[25]: 6
min([1,4])
Out[26]: 1
1.1.5 append() 可以向列表中追加元素。
a = [1,4]
a.append('5')
Out[22]: [1,'5']
2.元组(tuple) 元组的操作,包括访问,加,乘,in等操作和列表是相同的。需要注意一点是:
type((1))
Out[16]: int
type(('sd'))
Out[17]: str
type((1,3))
Out[18]: tuple
如果括号里有一个元素,默认为是一个运算,不会认为是元组的括号。如果要定义只有一个元素的元组的: type((1,)) Out[19]: tuple # 括号里面什么都没有表示一个空元组 type(()) Out[20]: tuple 元组是序列,不可变类型,但是如果元组里包含了列表,比如: a = (1,[4,5]) a[3][1] = '2' print(a) (1,'2']) 我们可以看到元组里的列表可以改变 3.字符串(str) 字符串和元组都是不可变的类型序列包括了字符串,列表和元组,序列都可以用下标索引和切片的方式。 set集合 set集合里的元素是无序的,不重复的。 in,not in,len,max,min,但是没有加,乘这种操作。集合有相减,交集,并集等操作
{1,6} - {1,2}
Out[1]: {3,6}
{1,6} & {1,2}
Out[2]: {1,2}
{1,6} | {1,7}
Out[3]: {1,7}
定义一个空集合的方法:set()
type({})
Out[8]: dict
type(set())
Out[9]: set
len(set())
Out[10]: 0
字典(dict) 字典和集合类型(set)有些类似,里面是无序的,所以字典不是序列。字典中可以value可以使任意类型;但是key是可以的,key必须是不可变的类型,比如Int,str,tuple等,例如list就是不可以的。字典的访问:{'key1':'value1,'key2':'value2'}['key1'],字典的访问通过key来进行字典里,key值是不可以重复的,如果定义有重复虽然不会报错,但是会自动选择其中一个。 序列,集合和字典属于组,是Python的基本数据类型。 变量 变量的定义时,首字母不能是数字,但可以是下划线。字母,数组,下划线可以组成变量。 Python 变量名区分大小写。定义变量的时候不用指明类型,和C++不一样。 值类型和引用类型: a = 1 b = a a = 3 print(b) 1 a = [1,4] b = a a[0] = '1' print(b) ['1',4] 值类型:int str tuple(不可改变),在重新定义的时候,因为不可改变会生成一个新的对象,这个时候b仍然指向原对象,a指向了一个新对象 引用类型:list,set,dict(可以改变),在定义一个新对象的时候,会在原对象的基础上进行改变而不产生新对象,所以无论是a还是b都会指向已经改变的原对象,所以a和b的值都会变化。 再进一步的,可以看以下代码: a = 'hello' id(a) Out[15]: 1510080259608 a = a + 's' id(a) Out[17]: 1510081716832 a[0] = 's' Traceback (most recent call last): File "<ipython-input-18-02436d67df37>",line 1,in <module> a[0] = 's' TypeError: 'str' object does not support item assignment id()是查询在计算机中的内存位置,我们可以看到发生了变化。所以a = a + 's'是可以的。但是对字符串的赋值操作,是不可以的,因为str是不可变的类型。 运算符 python中是没有自增和自减这种操作的。表示“等于”是'==',“不等于”是'!=' 字符串相比较的时候,把字符串中每一个字符拿出来相比较,比较AscII码值比较两个列表,和字符串是相同的。元组也可以进行比较,和列表和字符串是相同的。非bool类型在参与逻辑运算的时候,比如int,float,str等类型,在参与and,or,not的时候,遵循的规则和c++中类似。 0 and 1 Out[1]: 0 1 and 2 Out[2]: 2 1 and 0 Out[3]: 0 1 or 2 Out[4]: 1 0 or 1 Out[5]: 1 由上面的例子我们可以看出and和or的逻辑判断规则和c++一致。空字符串,0等判断为空,在上面的笔记中有记载。 成员运算符: in,not in 成员运算符表示一个元素是否在一个组里;成员运算符返回值类型是bool类型。在字典中,是判断key值。
a = 1
a in {1:'1'}
Out[7]: True
a = '1'
a in {1:'1'}
Out[9]: False
身份运算符 is,is not 身份运算符比较的是身份而不是值,简单来说就是内存地址。和关系运算符“==”不一样。
a = 1
b = 1
a is b
Out[12]: True
id(a)
Out[13]: 1438837200
id(b)
Out[14]: 1438837200
b = 1.0
a is b
Out[16]: False
id(b)
Out[17]: 2197963106536
a ==b
Out[18]: True
a = {1,3}
b = {2,1,3}
a==b
Out[21]: True
a is b
Out[22]: False
c = (1,3)
d = (2,3)
c ==d
Out[25]: False
c is d
Out[26]: False
id(a)
Out[27]: 2197907160424
id(b)
Out[28]: 2197990760232
我们可以看到,在无序的set集合中,元素顺序不一样在内存中位置不同,虽然值相同但是身份仍然不一样。 位运算符 &,|,^,~,<<,>> 判断变量的类型 python中一切都是对象,对象有三大特征,值(value),身份(id),类型(type)。判断变量的类型,可以使用isinstance()这个函数。 a = 'sds' isinstance(a,str) Out[30]: True isinstance(a,(str,int,float)) Out[31]: True isinstance(a,int) Out[32]: False isinstance可以判断对象中的子类是否满足条件,所以比较好。 vscode python 基本操作 + 单行注释:# 快捷键:ctrl + / (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
