(1)Python基础:数据类型、格式转换、运算符

都可以:

print('a''b')

print('a' 'b')

print('a'+'b')

print('a','b')常用!

数据类型

Python3 中有六个标准的数据类型:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

可变与不可变:

在 python 中,类型属于对象,变量是没有类型的:
a=[1,2,3]
a="Runoob"
以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,
而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

数据类型无非搞清楚:定义、赋值、取值

1-Number:

Python3 支持 int、float、bool、complex(复数)。
在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

int  float  conflex  (值不可变,指向值的指针变化)

a = [[1, 2, 3], [4, 5, 6]]#数组定义
a[1][2]=10
#利用numpy创建数组
import numpy as np;a=np.array([[1,2,3],[4,5,6]]);#这是一个两维数组 访问:a[:,0]

a, b, c, d = 20, 5.5, True, 4+3j
a=b=1

del a
2 / 4  # 除法,得到一个浮点数
2 // 4  # 除法,得到一个整数
2 ** 5  # 乘方

#一个变量可以通过赋值指向不同类型的对象。
a=True
a=10
#在混合计算时,Python会把整型转换成为浮点数。

a=complex(1,2)#(1+2j)
b=complex(1)#(1+0j)

 

2-String   -序列

(值不可变)

s1='abcde'
s111='''1232'''
s1[1]='k'#错误
print(s1[1:-1])#倒数第二个
print(s1[-1])#倒数第一个

#如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r
s2=s1+s1
s3=s1*2
s4 = "a" + 'b' * 3
s5=s1[2:3:1]#没有字符类型,只有字符串类型
print(s5[0:-1])           # 输出第一个到倒数第二个的所有字符
print(s5[0])              # 输出字符串第一个字符
print(s5[2:5])            # 输出从第三个开始到第五个的字符
print(s5[2:])             # 输出从第三个开始的后的所有字符

a='1233'
b='1' in a
b='1' not in a
a='1\t2'#1   2
a=r'1\t2'#1\t2
a=R'1\t2'#1\t2


b=u'a\u5343bcd'  #定义一个 Unicode 字符串 a千bcd

c='ab'
d=c.capitalize()#Ab

a="123"
b=a.center(6)#( 123  )

b=a.count('1',0,2)

a='123'
b=a.encode('UTF-8','strict')#编码
c=b.decode('UTF-8','strict')#解码,'ignore' 或 者'replace'

a='123'
b=a.endswith('3',0,3)#true
string.startswith(obj, beg=0,end=len(string))

a='1\t2\t3'
b=a.expandtabs(8)#1       2       3将/t转为空格

a='123'
b=a.find('2',0,3)
c=a.index('2',0,3)#如果不在会报异常

string.rfind(str, beg=0,end=len(string) )#类似于 find()函数,不过是从右边开始查找.
string.rindex( str, beg=0,end=len(string))#类似于 index(),不过是从右边开始.



string="123"
string.isalnum()#如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

string.isalpha()#如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

string.isdecimal()#如果 string 只包含十进制数字则返回 True 否则返回 False.

string.isdigit()#如果 string 只包含数字则返回 True 否则返回 False.

string.islower()#如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

string.isnumeric()#如果 string 中只包含数字字符,则返回 True,否则返回 False

string.isspace()#如果 string 中只包含空格,则返回 True,否则返回 False.

string.istitle()#如果 string 是标题化的(见 title())则返回 True,否则返回 False

string.isupper()#如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

a=('1','2','3')
string="|"
b=string.join(a)#1|2|3

a='123'
b=a.maketrans('1','a')#创建转换表,{49: 97}
string.translate(str, del="")#根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中

a='12345'
b=a.partition("2")#('1', '2', '345')
string.rpartition(str)#类似于 partition()函数,不过是从右边开始查找

a='12345'
b=a.replace('2','a',1)

a="1234"
b=a.split("3",4)#['12', '4']
string.splitlines([keepends])#('\r(回车符)', '\r\n', \n(换行符)')分隔,返回列表,keepends=false不包含\n


string.lower()#转换 string 中所有大写字符为小写.
string.swapcase()#翻转 string 中的大小写
string.title()#所有单词都是以大写开始

string.rstrip()#删除 string 字符串末尾的空格.
string.lstrip()#截掉 string 左边的空格
string.strip([obj])#在 string 上执行 lstrip()和 rstrip()

string.ljust(width)#返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.rjust(width)#返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

max(str)#返回字符串 str 中最大的字母。
min(str)#返回字符串 str 中最小的字母。

格式化,只是针对int,float,string三种类型的数据。方法两种,一种是“%??”%??;另一种是“{:??}”.forment()。

 


格式化:
      %c	 格式化字符及其ASCII码
      %s	 格式化字符串
      %d	 格式化整数
      %u	 格式化无符号整型
      %o	 格式化无符号八进制数
      %x	 格式化无符号十六进制数
      %X	 格式化无符号十六进制数(大写)
      %f	 格式化浮点数字,可指定小数点后的精度
      %e	 用科学计数法格式化浮点数
      %E	 作用同%e,用科学计数法格式化浮点数
      %g	 %f和%e的简写
      %G	 %f 和 %E 的简写
      %p	 用十六进制数格式化变量的地址


<sp>	在正数前面显示空格
#	在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
%	'%%'输出一个单一的'%'
(var)	映射变量(字典参数)


格式化-方法1-利用%

int:#总结就是%0.-N*+
除了%d,还有%uoxXeEp还有其他

num = +14
#如果num是个负数,那么这个-,也算做一位。
#如果num=+14,显示结果自动消掉+,要想最后显示有+,需要在%后加+
# %d打印时结果是14
print("num=%d" % num ) # output: num=14

# %1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是14
print("num=%1d" % num ) # output: num=14

# %3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数左侧补空格,所以%3d的打印结果是 14
#d前面加N,如果N比数据的长度大,则数据前面补空格,如果N前面有0,则补0;如果N比数据长度小,则无作用。
print("num=%3d" % num ) # output: num= 14

# %-3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数右侧补空格,所以%3d的打印结果是14_
print("num=%-3d" % num)  # output: num=14_

# %05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是00014
print("num=%05d" % num)  # output: num=00014

#加0可以在左侧补0,加.同样可以在左侧补0,但是加.的时候算位数,负号不算
# %.3d小数点后面的3意思是打印结果为3位整数,
# 当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果是014
print("num=%.3d" % num)  # output: num=014

# %.0003d小数点后面的0003和3一样,都表示3,意思是打印结果为3位整数,
# 当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果还是014
print("num=%.0003d" % num ) # output: num=014

# %5.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,再在左侧补空格,
# 规则就是补0优先,最终的长度选数值较大的那个,所以%5.3d的打印结果还是  014
print("num=%5.3d" % num ) # output: num=  014

# %05.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,
# 由于是05,再在左侧补0,最终的长度选数值较大的那个,所以%05.3d的打印结果还是00014
print("num=%05.3d" % num ) # output: num=00014

# 还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定
# 如下,不过这种方式04就失去补0的功能,只能补空格,只有小数点后面的3才能补0
print("num=%*.*d" % (5, 3, num) ) # output: num= 014

float:


#小数点也算1位
import math

# %f,  表示原值,默认是小数点后5位数
print("PI=%f" % math.pi)  # output: PI=3.141593

# %af,表示打印长度9位数,小数点也占一位,不够左侧补空格
print("PI=%9f" % math.pi)  # output: PI=_3.141593

# %a.f,表示去掉小数输出整数,03表示不够3位数左侧补0
print("PI=%03.f" % math.pi)  # output: PI=003

# %.bf,长度不管,小数保留2位
print("PI=%.2f" % math.pi)  # output: PI=3.14

# %a.bf,  %6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格
print("PI=%6.3f" % math.pi)  # output: PI=_3.142

# -改成右侧补空,%-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格
print("PI=%-6.3f" % math.pi)  # output: PI=3.142_

# %*.*f,还可以用%*.*f来表示精度,两个*的值分别在后面小括号的前两位数值指定,不过失去补0的功能,只能补空格
print("PI=%*.*f" % (6, 3, math.pi))  # output: PI=_3.142
string:


string = "hello"

#%s,打印时结果是hello
print("%s"%string)  # output:hello

#%2s,意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello
print("%2s"%string)  # output:hello

#%7s,意思是字符串长度为7,当原字符串的长度小于7时,在原字符串左侧补空格,
# 所以%7s的打印结果是  hello
print("%7s"%string)  # output:  hello

#%-7s,意思是字符串长度为7,当原字符串的长度小于7时,在原字符串右侧补空格,
# 所以%-7s的打印结果是  hello
print("%-7s!"%string)  # output:hello  !

#%.2s截取,意思是截取字符串的前2个字符,所以%.2s的打印结果是he,当原字符串长度小于2时,即是字符串本身
print("%.2s"%string)  # output:he

#%a.bs,先截取,后补空格。这种格式是上面两种格式的综合,首先根据小数点后面的数b截取字符串,当截取的字符串长度小于a时,还需要在其左侧补空格
print("%7.2s"%string)  # output:     he
print("%2.7s"%string)  # output:hello
print("%10.7s"%string)  # output:     hello

# 还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定
print("%*.*s"%(7, 2, string))  # output:     he

 

字符串格式化-方法2-利用format

int:

#左侧补0
print("{:0>2d}".format(5))  #05      #数字补零 (填充左边, 宽度为2)

#右侧补x
print("{:x<4d}".format(5))#5xxx   #数字补x (填充右边, 宽度为4)

#加,分隔
print("{:,}".format(1000000))#1,000,000   #以逗号分隔的数字格式

#左侧补空格
print("{:10d}".format(13))

#右侧补空格
print("{:<10d}".format(13))

#左右补空格,数据居中
print("{:^10d}".format(13))#13    #中间对齐 (宽度为10)
数字其他格式:

print("{:.2%}".format(0.25))#25.00%   #百分比格式
print("{:.2e}".format(1000000000))#1.00e+09   #指数记法
print('{:b}'.format(11))#1011
print('{:d}'.format(11))#11
print('{:o}'.format(11))#13
print('{:x}'.format(11))#b
print('{:#x}'.format(11))#0xb
print('{:#X}'.format(11))#0xB
float:


#:.bf, 保留小数位, 没有:a.f 和 :af的格式
print("{:.2f}".format(3.1415926))#3.14 保留小数点后两位

#:+,如果是负数,则+失去用处,如果是负数,则在结果前加+符号
print("{:+.2f}".format(3.1415926))#+3.14  带符号保留小数点后两位
print("{:+.2f}".format(-1)) #-1.00 带符号保留小数点后两位 
string:单纯就是替换内容


#format(string1,string2)
print("{1} {0} {1}".format("hello", "world"))

#format(str1=string1,str2=string2)
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))

# format(字典)
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))

# format(列表)
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的

#format(对象)
class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value))  # "0" 是可选的

 


(值不可变)3-Tuple(元组)-序列

t1 = ('abcd', 786, 20, 'runoob', 70.2)
t = 12345, 54321, 'hello!'
u = t, (1, 2, 3, 4, 5)#((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
t2=(t1, 3)
t3 = ()    # 空元组
t33=tuple()
t4 = (20,) # 一个元素,需要在元素后添加逗号
#tup1[2]=3 错误,不能修改
del t3,t2
t5=t1[2:3]#(20,)

#r1= cmp(t4, t5) #python3.X没有了
import operator
r1=operator.eq(t4,t5)

r2=len(t5)
r3=max(t5)
r4=min(t5)

4-List(列表) -序列

(值可变)



l1 = ['abcd', 786, 2.23, 'runoob', 70.2]
l1[2:3]=[32, 2.2]#赋值
l5=l1[2:4];l6=l1[3];l1[-1];l1[1:]#取值

l2=[l1, 1]
l3=l2*2
l4=l1+l2
l7 = []          ## 空列表
l77=list()

l7.append('Google')   ## 使用 append() 添加元素
l7.append('Runoob')
max(l7)
min(l7)
del l7[1]

len(l7)
for x in l7:
    print(x)

list.count(l7,'baidu')
list.extend(l7,l1)
list.index(l7,'Google')
list.insert(l7,0,'baidu')
rr1=list.pop(l7)#弹出末尾值
list.remove(l7,'abcd')
list.reverse(l7)
ll1=[2,1];list.sort(ll1)


遍历:
for i, list in enumerate(lists):

5-Dictionary(字典)  -映射

(可变)

#字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。键(key)必须使用不可变类型(数字,字符串或元组可以,列表不行),且唯一。
d1={'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
d11=dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
d111=dict(Runoob=1, Google=2, Taobao=3)
d1['name']='haha'
d1[1]='heihei'#1是键,而非序号
d2 = {}
d22=dict()

del d1['name']
d11.clear()
dict.clear(d11)
del d11
print(d1.keys())  # 输出所有键
print(d1.values())  # 输出所有值


dict4={x: x ** 2 for x in (2, 4, 6)}#{2: 4, 4: 16, 6: 36}
len(d111)
type(d111)
d112=dict.copy(d111)
t1=('Google','Taobao')
d113=d112.fromkeys(t1,1)#值全部为1
d3=d1.get('name')
#d4=d1.has_key('name') python3没有
l1=d1.items()#返回dict_items
value5=d1.pop('code')#根据键,返回值
d1.setdefault('a')#如果键不存在于字典中,将会添加键并将值设为None
d1.update(d2)#d2更新到d1

 

6-Set(集合)-集合


s1 = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
s11 = set('Tom')#只能有一个参数,可以是一个字符串
s12=set([1,2,3]) #也可以是一个列表
s2=set()

if 'Rose' in s1 :
    print('here')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a - b)  # a 和 b 的差集
print(a | b)  # a 和 b 的并集
print(a & b)  # a 和 b 的交集
print(a ^ b)  # a 和 b 中不同时存在的元素

格式转换

1-string | list->tuple
a="12345"
b=tuple(a)
print(b)#('1', '2', '3', '4', '5')
a=['1',2]
b=tuple(a)
print(b)#('1', 2)

2-string | tuple->list
a="12345"
b=list(a)
print(b)#['1', '2', '3', '4', '5']
a=('1',2)
b=list(a)
print(b)#['1', 2]

3-list|tuple|string->set
list=[1,2]
tuple=(3,4)
string="56"
set=set(list)#{1, 2}
set=set(tuple)#{3, 4}
set=set(string)#{'6', '5'}

4-list|tuple|string->frozenset
list=[1,2]
tuple=(3,4)
string="56"
set=frozenset(list)#frozenset({1, 2})
set=frozenset(tuple)#frozenset{3, 4})
set=frozenset(string)#frozenset{'6', '5'})

5-string->ASCII
string0="a"
r=ord(string0)#97

5-1ASCII->string
a=97
b=chr(a)#a

6-int->HEX
num=20
string1=hex(num)

7-int->OCT
string2=oct(num)

8-int<->float
a=int(3.6) #3
c=float(7)

9-string->int
a=int()#0
a=int('12',16)
a=int('0xa',16)
a=int('10',8)

10-string|int->float
a=float('12')
b=float(13)

11-序列->list
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
a=list(enumerate(seasons))#[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

12-十进制->十六进制
a=hex(12345)#0x3039

13-十进制->八进制
a=oct(12345)#0o30071

14-字符->ASCII
a=ord('a')#97

15-十进制->二进制
bin()

16-int->bool
bool()

17-数字->ACSII
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
unichr和 chr()函数功能基本一样, 只不过是返回 unicode 的字符。将ASCII转字符

18-对象->字符串
repr() 函数将对象转化为供解释器读取的形式。
str()转化成人阅读的形式

19-

运算符

'''
算术运算:+-*/% // **
比较运算:== != <> > < >= <=
赋值运算:= += /= *= %= **=  //=
位运算:& | ^ ~ << >>  (result is 0b?????)
逻辑运算:and or not   (result is 1 or 0)
成员运算符: in ,not in  #a in list
身份运算符:is ,is not
'''
a=10;b=20;a and b# =1
a=0;b=20;a and b# =0
a=10;b=11;a & b #=10000 & 10001=10000=10

'''
优先级:
**	指数 (最高优先级)
~ + -	按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //	乘,除,取模和取整除
+ -	加法减法
>> <<	右移,左移运算符
&	位 'AND'
^ |	位运算符
<= < > >=	比较运算符
<> == !=	等于运算符
= %= /= //= -= += *= **=	赋值运算符
is is not	身份运算符
in not in	成员运算符
not and or	逻辑运算符
'''

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值