加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python学习入门细节知识点

发布时间:2020-05-28 05:46:39 所属栏目:Python 来源:互联网
导读:python入门细节相除后的类型type(2/2)floattype(2//2)int双斜杠是整除,出来的类型是int。单斜杠的出来的是float类型。

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集合中,元素顺序不一样在内存中位置不同,虽然值相同但是身份仍然不一样。

位运算符

&,|,^,~,<<,>>
以上都是把数字当作二进制进行运算。把数字按照二进制进行换算,以&举例,相同位1,不同为0。然后再把二进制数转换成数字原来的进制。eg: 2&3 == 2

判断变量的类型

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 + /
+ 多行注释:""" """ 快捷键:alt + shift + a

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读