2019-04-27 Python第二次課程

python學(xué)習(xí)

dir()

這些方法不用全記,可以用dir查看所有的操作方法

print(dir(''))
#['__add__', '__class__', '__contains__', '__delattr__', '__dir__', ............
print(dir([]))
#['__add__', '__class__', '__contains__', '__delattr__'...........

字符串的操作

字符串是不可變的,操作實際上是創(chuàng)建新的字符串并引用

  • .replace()
    用給定字符串替換字符串中的部分字符

  • .find()
    查找.如果包含子字符串返回開始的索引值,否則返回-1。

  • .Index()
    查找.如果指定 beg(開始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),該方法與 python find()方法一樣,只不過如果str不在 string中會報一個異常。

  • .count(x, __start, __end)
    查找出現(xiàn)的次數(shù)

print("hello world".count('o'))
#2
print("hello world".count('o',2,6))
#1
  • .split()
    (字符串分割,切片)
  • .capitalize()
    (字符串第一個字母大寫)
  • .title()
    字符串每一個單詞首字母大寫(按空格來劃分單詞)
  • .startswith()
    是否以給定字符開頭,返回布爾值
  • .endswith()
    是否以給定字符串結(jié)尾,(返回布爾值)
  • .upper()
    把字符串所有變?yōu)榇髮?/li>
  • .lower()
    把字符串所有變?yōu)樾?/li>
  • .rjust(width,fillchar)
    返回一個字符串右對齊,長度變?yōu)閣idth,并用fillchar(默認(rèn)為空格)填充.fillchar必須是一個字符,否則會報錯:TypeError: The fill character must be exactly one character long
name='hello world'
print(name.rjust(31,'o'))
print(name.rjust(31,'oo'))
#輸出結(jié)果為
#oooooooooooooooooooohello world
#error
  • .ljust()
    字符串左對齊,長度變?yōu)閣idth,并用fillchar(默認(rèn)為空格)填充.fillchar必須是一個字符,否則會報錯:TypeError: The fill character must be exactly one character long

  • .center()
    字符串居中,長度為width,用fillchar填充.

print('hello world'.center(31,'o'))
#輸出:oooooooooohello worldoooooooooo
  • .lstrip(chars)
    清楚字符串左邊的chars(默認(rèn)為空格)
print('oooooooohello      o'.lstrip('o'))
#輸出:hello      o
  • .rstrip(chars)
    清楚字符串右邊的chars(默認(rèn)為空格)
  • .strip(chars)
    清楚字符串兩端的chars(默認(rèn)為空格)
print('     hello    '.lstrip())
#輸出:hello
  • .rfind()
  • .lfind()
  • .rindex()
  • .lindex()
  • .partition(sep)
    從左邊第一個sep,把字符串分割為三部分,返回元組.(sep前,sep,sep后)
print('   hello world  ooo'.partition('o'))
#輸出:('   hell', 'o', ' world  ooo')
  • .rpartition()
    從右邊第一個sep,把字符串分割為三部分,返回元組.(sep前,sep,sep后)
print('   hello world  ooo'.rpartition('o'))
#輸出:('   hello world  oo', 'o', '')
  • .splitlines()
    按照行分割,返回一個包含各行作為元素的列表.
print('   hello wor\nld  \nooo'.splitlines())
#輸出:['   hello wor', 'ld  ', 'ooo']
  • .isalpha()
    判斷字符串是否都是由字符組成的(空格,數(shù)字,轉(zhuǎn)義字符都不行)返回布爾值.
print('hellow\norlooo'.isalpha())
print('hellow orlooo'.isalpha())
print('hellow2orlooo'.isalpha())
#輸出:False
#False
#False
  • .isdigit()
    判斷是否只是數(shù)字
print('156156'.isdigit())
#True
  • .isalnum()
    判斷是否只由數(shù)字或字母組成
print('hel low2orlooo'.isalnum())
#False
print('hellow2orlooo'.isalnum())
#True
  • .isspace()
    判斷是否只由空格組成
print('    '.isspace())
#True
  • .join()
    鏈接為字符串.可以用給定字符分割.
list=['my','name','is','xtf']
print('/'.join(list))
#my/name/is/XTF
print(' '.join(list))
#my name is XTF

其他tips

  • "'\t"是tab的轉(zhuǎn)義字符,是四個空格

List 列表 增,刪,改,查

列表可以儲存不同類型的數(shù)據(jù)

  • 列表訪問不能越界,不論是正向還是反向
list=['a','b',2]
print(list[2])
#2
list=['a','b',2]
print(list[5])
#IndexError: list index out of range
list=['a','b',2]
print(list[-1])
#2
list=['a','b',2]
print(list[-5])
#IndexError: list index out of range

  • .append()
    在列表后插入
  • .insert(index,object)
    在指定位置index前入元素object
list=['a','b',2]
list.insert(2,10)
print(list)
#['a', 'b', 10, 2]
  • extend(interale)
list=['a','b',2]
list2=['c','d']
print(list)
list.extend(list2)
print(list)
#['a', 'b', 10, 2]
#'a', 'b', 10, 2, 'c', 'd']

  • 直接修改
list=['a','b',2]
list[2]='c'
print(list)
#['a', 'b', 'c']

  • in 和 not in
    查找是否存在列表里,返回布爾值
list=['a','b',2]
print('c' in list)
#False
print('c' not in list)
#True
  • .index(object, start, stop)
    查找object,并返回第一個object的位置.區(qū)域為start 到 stop,左閉右開.
list=['a','b',2]
print(list.index(2,0,2))
#ValueError: '2' is not in list
list=['a','b',2]
print(list.index(2,0,3))
#2

  • del
    根據(jù)下標(biāo)進(jìn)行刪除
list=['a','b',2]
del list[2]
print(list)
#['a', 'b']
  • .pop()
    刪除最后一個元素
list=['a','b',2]
print(type(list.pop()))
print(list.pop())
print(list)
#<class 'int'>
#b
#['a']
  • .remove()
    根據(jù)元素的值進(jìn)行刪除
list=['a','b',2]
list.remove('b')
print(list)
#['a', 2]

隨機數(shù)

  • randint() 左閉右閉的
    隨機整數(shù)
from random import randint
num=randint(-10,10)
print(num)
  • 增強可讀性
    for 循環(huán)中的變量用 _ 來寫,表示在循環(huán)中沒有用到這個變量.
num_list=[]
for _ in range(10):
    num_list.append(randint(1,20))
print(num_list)
  • .sort()
    對原列表進(jìn)行排序
num_list=[]
for _ in range(10):
    num_list.append(randint(1,20))
num_list.sort()
print(num_list)
num_list.sort(reverse=True)
print(num_list)
#[1, 1, 3, 6, 9, 11, 11, 13, 14, 17]
#[17, 14, 13, 11, 11, 9, 6, 3, 1, 1]
  • sorted()
    排序
    和.sort()的區(qū)別:
    1. 返回新的列表,原來的沒有改變.
    2. .sort()屬于列表的的內(nèi)置函數(shù),而sorted()可以對所有可迭代對象進(jìn)行排序
    3. .sort()是方法,sorted()不是
num_list=[]
for _ in range(10):
    num_list.append(randint(1,20))
print(sorted(num_list))
#[4, 6, 6, 9, 12, 13, 14, 16, 20, 20]
  • 列表的嵌套(二維數(shù)組)
list=[['a','b'],['c','d']]
print(list)
print(list[0])
print(list[0][0])
#[['a', 'b'], ['c', 'd']]
#['a', 'b']
#a
#print(list[0,1]) 不能這樣寫,numpy才這樣寫
  • 列表推導(dǎo)式 重要
    所謂的列表推導(dǎo)式,就是指輕量級的循環(huán)創(chuàng)建列表.列表推導(dǎo)式效率高.
list1=[]
for i in range(10):
    list1.append(i)
print(list1)
#列表推導(dǎo)式
list2=[i for i in range(10)]
print(list2)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

生成相同的內(nèi)容

list1=[]
for _ in range(3):
    list1.append('不給魯班我就送')
print(list1)
#列表推導(dǎo)式
list2=['不給魯班我就送' for _ in range(3)]
print(list2)
#['不給魯班我就送', '不給魯班我就送', '不給魯班我就送']
#['不給魯班我就送', '不給魯班我就送', '不給魯班我就送']

列表推導(dǎo)式解析:

from random import randint
list=[randint(-10,10) for _ in range(10)]
print(list)
#選出大于0的數(shù)據(jù)
res=[]
for x in list:
    if x>=0:
        res.append(x)
print("用for循環(huán)篩選>=0:",res)
print('使用列表解析篩選:',[x for x in list if x>=0])
#用for循環(huán)篩選>=0: [3, 8, 4, 5, 0]
#使用列表解析篩選: [3, 8, 4, 5, 0]
number=[i for i in range(11)]
print(number)
print([x for x in number if x%2==0])
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#[0, 2, 4, 6, 8, 10]

  • 列表轉(zhuǎn)化為字符串
my_list=['Welcom','to','ML','World']
print(' '.join(my_list))
print('/'.join(my_list))
#Welcom to ML World
#Welcom/to/ML/World
  • 列表的乘法
    獲得一個列表,里面內(nèi)容重復(fù)
list=['a','b','c',1,2,3]
print(list*3)
#['a', 'b', 'c', 1, 2, 3, 'a', 'b', 'c', 1, 2, 3, 'a', 'b', 'c', 1, 2, 3]

元組 tuple

不能修改,不能刪除

  • .index()
    查找給定元素,返回下標(biāo)值
a=(1,2,3,4,5)
print(a.index(3))
#2
  • .count()
    返回出現(xiàn)的次數(shù)
a=(1,2,3,4,5)
print(a.count(3))
#1
  • 單個元素的元組是(222111,)
    (2221122)不是元組,是數(shù)字
print(type((121222)),type((21212121,)))
#<class 'int'> <class 'tuple'>
  • 改變元組
    元組里邊如果有l(wèi)ist,實際上存的是list的地址,這個地址是沒法改變的,但是list內(nèi)容可以改變
a=(1,[2,3],9,0)
print(a)
a[1].append(4)
print(a)
#(1, [2, 3], 9, 0)
#(1, [2, 3, 4], 9, 0)

  • zip()
    將可迭代對象作為參數(shù),將對象中對應(yīng)的元素一一對應(yīng),轉(zhuǎn)化為一些元組,然后返回這些元組對象的內(nèi)存位置,如要顯示可用list()轉(zhuǎn)化.如果長度不一致,則長度與最短的相同
a=(1,2,3,4,5)
b=('a','b','c')
print(list(zip(a,b)))
#[(1, 'a'), (2, 'b'), (3, 'c')]
a=[1,2,3,4,5]
b=['a','b','c']
print(list(zip(a,b)))
#[(1, 'a'), (2, 'b'), (3, 'c')]
  • 同時迭代多個對象
a=[1,2,3]
b=[1,2,3]
c=[1,2,3]
for i,j,k in a,b,c:
    print(i+j+k)
#6
#6
#6
a=[1,2,3,4]
b=[1,2,3]
c=[1,2,3]
for i,j,k in a,b,c:
    print(i+j+k)
#ValueError: too many values to unpack (expected 3)

字典

*** key和value的鍵值對***

  • 獲取key對應(yīng)的值
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(info["name"])
#劉強東
  • .get()
    當(dāng)不確定字典中是否存在某個key時,可以用.get().不存在的時候返回None或給定的默認(rèn)值.
    不存在的話返回None
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(info.get("mail"))
#None

可以給定默認(rèn)值,若key不存在,返回默認(rèn)值

info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(info.get("mail","jingdong.com"))
#jingdong.com
print(info.get("age",25))
#25
  • 值的更改
    直接賦值就可以
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
info['name']="馬云"
print(info["name"])
#馬云
  • 添加
    直接賦值就可以
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
info['sex']="male"
print(info,'\n',info["sex"])
#{'name': '劉強東', 'age': 45, 'id': 123456789, 'addr': '北京', 'sex': 'male'} 
# male
  • 刪除
    1. del
      根據(jù)鍵值刪除
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
del info["name"]
print(info)
#{'age': 45, 'id': 123456789, 'addr': '北京'}
  1. 清除
    刪除整個字典
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
del info
print(info)
#NameError: name 'info' is not defined
  1. clear()
    刪除字典內(nèi)部數(shù)據(jù),留下空字典
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
info.clear()
print(info)
#{}

clear此方法返回None

info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(info.clear())
#None
  • len()
    字典的長度(鍵值對的個數(shù))
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(len(info))
#4
  • .keys()
    返回所有的key
    返回的不是list,但可迭代,可用list()轉(zhuǎn)換
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(info.keys())
#dict_keys(['name', 'age', 'id', 'addr'])
print(type(info.keys()))
#<class 'dict_keys'>
print((list(info.keys())))
#['name', 'age', 'id', 'addr']
  • .values()
    返回所有的value
    返回的不是list,但可迭代,可用list()轉(zhuǎn)換
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(info.values())
#dict_values(['劉強東', 45, 123456789, '北京'])
  • .items()
    返回(key,value)
    返回的不是list,但可迭代,可用list()轉(zhuǎn)換
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
print(info.items())
#dict_items([('name', '劉強東'), ('age', 45), ('id', 123456789), ('addr', '北京')])
  • 遍歷整個字典
    遍歷整個字典的key和value
info={'name': "劉強東",'age': 45,'id':123456789,'addr':'北京'}
for key,value in info.items():
    print(key,"=====>",value)
#name =====> 劉強東
#age =====> 45
#id =====> 123456789
#addr =====> 北京
  • 把字典轉(zhuǎn)化為list
    轉(zhuǎn)化為list時會將key和value變?yōu)樵M,然后變?yōu)閘ist

  • 字典的解析

#創(chuàng)建一個班級的分?jǐn)?shù)
from random import randint
grades={'student{}'.format(i): randint(50,100) for i in range(1,5)}
print(grades)
#篩選出高于90分的人
d={k:v for k,v in grades.items() if v>=90}
print(d)
#{'student1': 56, 'student2': 60, 'student3': 97, 'student4': 73}
#{'student3': 97}

集合

無序,元素是唯一的
里面不能放list或set或dic等
顯示時為有序,實際為無序
常用于去重

  • set 集合
set1={1,4,2,7,5,1}
print(type(set1))
#<class 'set'>

添加

  • .add()
    添加元素
set1={1,4,2,7,5}
set1.add(8)
print(set1)
#{1, 2, 4, 5, 7, 8}

刪除

  • .remove()
    刪除給定,不存在的話報錯
set1={1,4,2,7,5,1}
set1.remove(1)
print(set1)
#{2, 4, 5, 7}
  • .pop()
    隨機刪除元素,若集合為空,則報錯
set1={1,4,2,7,5,1}
set1.pop()
print(set1)
#{2, 4, 5, 7}
  • .discard()
    如果存在給定值,則刪除,若不存在,則不做任何操作.
set1={1,4,2,7,5,1}
set1.discard(2)
print(set1)
set1.discard(3)
print(set1)
#{1, 4, 5, 7}
#{1, 4, 5, 7}
  • .update()
  • 集合的解析
set1={randint(0,20) for _ in range(10)}
print(set1)
res={ x for x in set1 if x%3==0}
print(res)

函數(shù)

  • 格式
    def 函數(shù)名(參數(shù)):
    pass
def sumNum(start,end):
    res=0
    for i in range(start,end+1):
        res+=i
    return res
res=sumNum(1,100)
print(res)
#5050
  • 函數(shù)解釋
    在定義函數(shù)后輸入三個引號,會自動生成參數(shù)和結(jié)果讓我來解釋.在后面用到函數(shù)的時候按ctrl并鼠標(biāo)放在函數(shù)上,會顯示函數(shù)的說明.
def sumNum(start,end):
    """
    計算start到end的累加和
    :param start: 開始值
    :param end: 結(jié)束值
    :return: 累加和
    """
    res=0
    for i in range(start,end+1):
        res+=i
    return res
res=sumNum(1,100)
print(res)
image.png
  • doc 是函數(shù)的注釋
def ff(a):
    """
    打印test
    :param a: 隨意
    :return: 5
    """
    a=3
    return 5
print(ff.__doc__)
#    打印test
#    :param a: 隨意
#    :return: 5
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容