python基础知识(一)

1.数字

        python中的整数用int表示,相比于其他语言不区分长整形、整形,不管你输入多大的数字它都不会溢出。

        python中的浮点数用float表示,不区分单精度和双精度。

2.四则运算

        浮点数+浮点数=浮点数

        浮点数+整数=浮点数

        整数+整数=整数

        整数/整数=浮点数

>>>4/2
2.0

        整除操作://

        余数操作:%

字符串:

        “+”可用于字符串拼接:仅限于同种类型,如果字符串和数字相加会报错。

        字符串还可以乘:

>>>a="python"
>>>a*3
pythonpythonpython

转义字符:

        \n:换行

        \t:制表

原始字符串:表示当前不是换行字符,就是在字符串面前加r

>>>print(r'c:\now')
c:\now

索引和切片:

        切片的作用区间是左闭右开的,a[2,6]相当于[2,6)

>>>a='i love python'
>>>b=a[2:6]
>>>a
'love'

        字符串的切片不会影响原字符串

字符串的格式化输出:

        字符的格式化就是我们定义一个模板,然后在模板的一处或几处留一些空位,以便将来在空格填上相应的字符串,溜出来的空位我们称为占位符。现在用的更多的方法是format()

>>>'i love {0} and {1}'.format('python','java')
i love python and java

常用的字符串方法:

replace():

split()

count()

列表:

列表的切片和索引

        python中的列表用[]表示,在方括号里可以是字符串,数字或是多种不同的对象,除此之外,列表的元素可以无限大(但是要考虑硬件设备

>>>a=[1,2,'aa',[1,22]]
>>>a
[1, 2, 'aa', [1, 22]]

列表和字符串一样都有序列,列表里的元素也有序,所以列表也有索引和切片,也是左闭右开

    a=[1,2,'aa',[1,22]]
    print(a[0])
    print(a[0:2])
    print(a[3][1])#注意这里是二维数组的写法
    print(a[3:1])#

1
[1, 2]
22
[]

注意序列都是从左到右排列的,当然序列里还可以跳步,完整写法是[start:end:step]默认情况下step=1,step为负数表示从相反的方向

    a=[1,2,'aa',[1,22]]
    print(a[::2])
    print(a[::-2])

[1, 'aa']
[[1, 22], 2]

列表操作

列表的基本操作和字符串差不多,只在此说一下列表的独特操作。

列表和字符串的一个很大不同是:字符串不可修改,但是列表可以修改

    a=[1,2,'aa',[1,22]]
    a[1]='womeik'
    print(a)
    b='Monkey'
    b[0]='python'
    print(b)

[1, 'womeik', 'aa', [1, 22]]
Traceback (most recent call last):
  File "D:/python/pythonLearningDemo/main.py", line 6, in <module>
    b[0]='python'
TypeError: 'str' object does not support item assignment

除了可以修改元素以外,列表还可以给自己添加元素,使用append()方法像列表中追加元素,追加到末尾

    a=[1,2,'aa',[1,22]]
    a.append('womeik')
    print(a)

[1, 2, 'aa', [1, 22], 'womeik']

常用列表函数:

append():将元素追加到列表的最右边

extend():合并两个列表

    a=[1,2,'aa',[1,22]]
    b=['kl','jdj']
    a.extend(b)
    b.extend(a)
    print(a)
    print(b)

[1, 2, 'aa', [1, 22], 'kl', 'jdj']
['kl', 'jdj', 1, 2, 'aa', [1, 22], 'kl', 'jdj']

count():统计元素出现次数

    a=[1,2,'aa',[1,22],1]
    print(a.count(1))
    print(a.count(2))
    print(a.count(3))


2
1
0

index():元素第一次出现的位置

    a=[1,2,'aa',[1,22],1]
    print(a.index(2))
    print(a.index(3))

Traceback (most recent call last):
  File "D:/python/pythonLearningDemo/main.py", line 4, in <module>
    print(a.index(3))
ValueError: 3 is not in list
1

insert():在任意位置添加元素

    a=[1,2,'aa',[1,22],1]
    a.insert(1,8)
    print(a)
    a.insert(0,'white')
    print(a)


[1, 8, 2, 'aa', [1, 22], 1]
['white', 1, 8, 2, 'aa', [1, 22], 1]

remove():删除元素,元素必须在列表中并且是在原列表上删除,有重复元素时,只删除第一个

    a=[1,2,'aa',[1,22],1]
    a.remove(1)
    print(a)
    a.remove(4)

[2, 'aa', [1, 22], 1]
Traceback (most recent call last):
  File "D:/python/pythonLearningDemo/main.py", line 5, in <module>
    a.remove(4)
ValueError: list.remove(x): x not in list

pop():函数填写删除元素的索引时就是删除该元素,没有指定索引时删除列表最后一个元素,pop()有返回值就是删除的元素

a=[1,2,'aa',[1,22],1]
pop1=a.pop(1)
print(pop1)
print(a)
pop2 = a.pop()
print(pop2)
print(a)#也会修改原数组哦

运行结果:
2
[1, 'aa', [1, 22], 1]
1
[1, 'aa', [1, 22]]

reverse():在原列表上操作,将列表的元素顺序反过来

    a=[1,2,'aa',[1,22],1]
    b=a.reverse()
    print(a)
    print(b)


[1, [1, 22], 'aa', 2, 1]
None

sort():对列表进行排序,默认是递增排序,在原列表上操作

    b=['a','r','p','d','b']
    b.sort()
    print(b)

['a', 'b', 'd', 'p', 'r']

比较列表与字符串:

相同点:两者都是序列类型,可以使用切片或索引得到一个或多个元素;对于序列的基本操作,比如连接操作,len()这一类的函数也实用。

不同点:

1.列表是可变的,字符串是不可变的,append(),insert(),pop()等函数对于字符串来说都不适用。

2.列表的包容:字符串中的每一个元素都是字符,列表中的元素可以是任意一种或多种类型的组合。

元组:

定义:

        元组是Python中的一个内置的数据结构,它是一个不可变的序列,所谓的不可变序列就是不可以进行增删改的操作。

    a='abc'
    print(type(a))
    b=1,'as',99,'k'
    print(type(b))

<class 'str'>
<class 'tuple'>

b的输入不会报错是因为把数据放到了一个圆括号中,这个带括号的对象就是:元组

元组用括号括起来,元组也是序列,但是元组中的元素不能够更改,和字符串类似;元组中的元素又可以是任意对象,与列表类似;

索引和切片:

        元组与列表字符串相似,每个元素有自己的索引,并且可以切片

    b=1,'as',99,'k',[2,'python',99]
    print(b[1])
    print(b[::-1])
    print(b[2:3])
    print(b[4][1])

as
([2, 'python', 99], 'k', 99, 'as', 1)
(99,)
python

元组与列表相互转换:

由于元组是不可修改的,关于修改列表的方法在这里都无效,使用dir(tuple)查看元组类型有哪些方法

    print(dir(tuple))

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

虽然元组不可修改,但是元组和列表是可以相互转换的,使用list()和tuple()实现

    b=1,'as',99,'k',[2,'python',99]
    print(type(b))
    b=list(b)
    print(type(b))
    b=tuple(b)
    print(type(b))

<class 'tuple'>
<class 'list'>
<class 'tuple'>

还有一点值得提醒的就是,当元组中只有一个元素时,注意在元素后面跟上英文的逗号

    c=1
    print(type(c))
    d=1,
    print(type(d))
    e=('a')
    print(type(e))
    f=('a',)
    print(type(f))

<class 'int'>
<class 'tuple'>
<class 'str'>
<class 'tuple'>

元组的应用场景:

之后补充

字典:

        字典也称为键值对,形式为’key':'value',键与值之间用英文的冒号隔开。每一对键值之间使用英文的逗号隔开,在字典中,键是唯一的,不能重复,而值对应于键,可以重复

创建字典:

      1.第一种方法:创建一个空的字典,然后向里面加东西(当然也可以是非空的) 

    dict={}
    print(dict)
    print(type(dict))
    dict['name']='liming'
    print(dict)

{}
<class 'dict'>
{'name': 'liming'}

 我们来验证一下字典是不是可修改的

    dict={}
    dict['name']='liming'
    dict["lan"]="python"
    dict["age"]="20"
    print(dict)
    dict["age"]=188
    print(dict)

{'name': 'liming', 'lan': 'python', 'age': '20'}
{'name': 'liming', 'lan': 'python', 'age': 188}

以上表明,字典是可变的

        2.第二种方法,使用元组创建字典

    tuple=(['name','liming'],['age','18'])
    dict=dict(tuple)
    print(dict)
    print(type(dict))

{'name': 'liming', 'age': '18'}
<class 'dict'>

强调一点:字典中的键必须是不可变的数据类型,值可以是任意数据类型,所以元组可以当字典的键,但是列表不可以,列表只能做值

    tuple=(['name','liming'],['age','18'])
    list=[1,2]
    dict=dict(tuple)
    dict['age']=19
    print(dict)
    dict[list]="lakldj"
    print(dict)
    print(type(dict))


Traceback (most recent call last):
  File "D:/python/pythonLearningDemo/main.py", line 7, in <module>
    dict[list]="lakldj"
TypeError: unhashable type: 'list'
{'name': 'liming', 'age': 19}


#在Python中,这个错误通常是由于你试图将一个可变类型的对象,
#如列表(list)放入集合(set)或作为字典(dict)的键时产生的。
#集合和字典中的元素需要是可哈希的(hashable),也就是不能够被改变的。
#列表是可变类型,其内容可以被改变,所以它是不可哈希的。
#当你遇到类似这样的错误:如果要作为字典的键,可以将列表转换为不可变的元组

字典是一种映射关系,只要知道了键就可以知道值,添加完的值并不按照它的添加顺序显示,所以在字典中既没有索引也没有切片。

字典的键值对存储数据是一种高效的查找数据方式,如果在列表中查找值,需要从头开始一个一个的寻找,直到找到值,在字典中可以通过键找到值,在数据规模比较大时,这种好处比较明显

字典的基本操作:

1.clear()

清除字典中所有元素,得到一个空的字典

    dict={'name':'liming'}
    dict.clear()
    print(dict)

{}

del是将字典删除

2.get&&setdefault

这是两个跟键值对相关的方法,get方法得到字典中某个键的值,get相比于直接按照键来查询要宽松一些,如果想查的值不存在,get不会有反应,

    dict={'name':'liming'}
    print(dict.get('age'))

None

直接按照键查询会报错

    dict={'name':'liming'}
    # print(dict.get('age'))
    print(dict)
    print(dict['age'])
    print(dict)


{'name': 'liming'}
Traceback (most recent call last):
  File "D:/python/pythonLearningDemo/main.py", line 5, in <module>
    print(dict['age'])
KeyError: 'age'

setdefault也是查找字典中某个键的值,如果键存在的话就正常输出,如果不存在就在字典中加入这个键值对

    dict={'name':'liming'}
    print(dict.setdefault("name"))
    dict.setdefault("age",23)
    print(dict)

liming
{'name': 'liming', 'age': 23}

3.items&&keys&&values

z请看实例:

    dict={'name':'liming','age':19}
    my_i=dict.items()
    print(my_i)
    my_k=dict.keys()
    print(my_k)
    my_v=dict.values()
    print(my_v)


dict_items([('name', 'liming'), ('age', 19)])
dict_keys(['name', 'age'])
dict_values(['liming', 19])

4.pop&&popitem

字典中的删除操作

pop以字典中的键为参数,删除指定的键值对,pop中的参数不能省略,如果删除字典中没有的键值会报错。

    dict={'name':'liming','age':19}
    dict.pop('name')
    print(dict)
    dict.pop("na")


{'age': 19}
Traceback (most recent call last):
  File "D:/python/pythonLearningDemo/main.py", line 5, in <module>
    dict.pop("na")
KeyError: 'na'

popitem不用写参数,但是他删除的不是最后一个,因为我们说过字典没有顺序,所以他是随机删除一个

    dict={'name':'liming','age':19,'score':78,'class':'A'}
    dict.popitem()
    print(dict)
    dict.popitem()
    print(dict)

{'name': 'liming', 'age': 19, 'score': 78}
{'name': 'liming', 'age': 19}

(1)返回并删除字典中的最后一对键和值。(Python3.7 之后的版本)
(2)返回并删除字典中的任意一对键和值。(Python3.7 之前的版本)

5.update

就是更新字典,参数是字典或者某种可迭代的对象,没有返回值

    dict={'name':'liming','age':19,'score':78,'class':'A'}
    my_dict={"teacher":"Luku"}
    dict.update(my_dict)
    print(dict)


{'name': 'liming', 'age': 19, 'score': 78, 'class': 'A', 'teacher': 'Luku'}

集合set:

集合的特点是无次序,不可重复,有的可变,有的不可变。之前我们说元组是列表和字符串部分特征的并集,那么集合我们可以看作是列表和字典部分特征的并集

创建集合

的方法,我们推荐set(),------也可以使用{},但是为了避免歧义不建议使用)

    my_set=set("wahaha")
    print(type(my_set))
    print(my_set)
    my_set2=set(["java",'python','C','Go','java'])
    print(my_set2)


<class 'set'>
{'w', 'h', 'a'}
{'C', 'Go', 'java', 'python'}

从上面的例子可以看出,集合输出的是无序,去重的元素,这是一种高效的去重方式

集合的方法:

使用dir(set)查看相关方法

['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

主要介绍几个常见的

1.add&&update

add用于向集合中添加元素,

update将另一个集合合并过来,注意创建集合时我们使用set()

    my_set=set(["java",'python','C','Go','java'])
    my_set.add("scala")
    print(my_set)
    my_set2=set(['PHP','JS'])
    my_set2.update(my_set)
    print(my_set2)


{'Go', 'scala', 'python', 'java', 'C'}
{'Go', 'java', 'C', 'scala', 'PHP', 'JS', 'python'}

2.pop&&remove&&clear

pop()随机删除,没有参数

remove可以删除指定元素,没有返回值,集合中没有删除元素时会报错

clear把集合清空

    my_set=set(["java",'python','C','Go','java'])
    my_set.pop()
    print(my_set)
    my_set.remove('C')#如果上一个操作删除C则报错
    print(my_set)
    my_set.clear()
    print(my_set)

#展示其中一种运行结果
{'Go', 'java', 'C'}
{'Go', 'java'}
set()

集合的运算:

集合的运算与数学中的一致,分为集合和集合,集合和元素

首先看元素和集合,元素与集合只有一种关系:属于或不属于

    my_set=set(["java",'python','C','Go','java'])
    print('java' in my_set )
    print('Java' in my_set)


True
False

再来说集合与集合:比较常见的5种关系

1.A与B相等:==

    my_set=set(["java",'python','C','Go','java'])
    my_set2=set(["java",'python','C','Go'])
    my_set3=set(["java",'python','C'])
    print(my_set2==my_set)
    print(my_set2==my_set3)

True
False

2.A是B的子集:<或issubset()

    my_set=set(["java",'python','C','Go','java'])
    my_set2=set(["java",'python','C','Go'])
    my_set3=set(["java",'python','C'])
    print(my_set2.issubset(my_set))
    print(my_set2<my_set)
    print(my_set3.issubset(my_set2))


True
False
True

3.A和B的并集

A|B或A.union(B),生成一个新的对象

    my_set=set(["java",'python','C','Go','java'])
    my_set2=set(["js",'python','C','PHP'])
    my_set3=my_set.union(my_set2)
    print(my_set3)

{'C', 'Go', 'js', 'PHP', 'python', 'java'}

4.A和B的交集

a&b或A.intersetction(B)

    my_set=set(["java",'python','C','Go','java'])
    my_set2=set(["js",'python','C','PHP'])
    my_set3=my_set.intersection(my_set2)
    my_set4=my_set&my_set2
    print(my_set3)
    print(my_set4)



{'python', 'C'}
{'python', 'C'}

5.A相对于B的补集

也叫差集,就是属于A但不属于B的元素,用A-B或A.difference(B)

    my_set=set(["java",'python','C','Go','java'])
    my_set2=set(["js",'python','C','PHP'])
    my_set3=my_set.difference(my_set2)
    my_set4=my_set-my_set2
    print(my_set3)
    print(my_set4)


{'java', 'Go'}
{'java', 'Go'}

最后,使用这些运算时最好使用用函数,提高可读性

以上就是python常见的对象类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值