python語(yǔ)法基礎(chǔ)
2019-04-27
--張伯羽
1.字符串的常用操作
查看字符串/列表的操作:
print(dir(''))
print(dir([]))
常用:find(),replace(),split(),count(),join(),stript()
my_str = 'hello world neuedu and neueducpp'
- 1.replace() 把目標(biāo)字符串替換成其他字符串
name = 'hello world haha'
new_name = name.replace('ha', 'Ha', 1)
print(new_name)
price = "$599"
price = price.replace('$', '')
print(price)
hello world Haha
599
- 2.split() 以 str 為分隔符分割 name,如果 maxsplit 指定值,那么僅分割 maxsplit 個(gè)子串
name = 'hello ha ha ha'
name_list = name.split(" ")
print(name_list)
name_list1 = name.split(' ', 2)
print(name_list1)
['hello', 'world', 'ha', 'ha']
['hello', 'world', 'ha ha']
- 3.join() 連接字符串?dāng)?shù)組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個(gè)新的字符串
str4 = " "
list1 = ['my','name','is','songxiaobao']
my_name = str4.join(list1)
print(my_name)
# _ / ,
my_name = ",".join(list1)
print(my_name)
my name is songxiaobao
my,name,is,songxiaobao
- 4.capitalize() 把字符串的一個(gè)字符大寫
my_str2 = my_str.capitalize()
print(my_str2)
- 5.title() 把字符串的每個(gè)單詞首字母大寫
my_str3 = my_str.title()
print(my_str3)
- 6.startwith 檢測(cè)字符串是否以 str 為開頭
my_str4 = my_str.startswith('hello')
print(my_str4)
my_str5 = my_str.startswith('Hello')
print(my_str5)
- 7.endwith() 檢測(cè)字符串是否以str?yàn)榻Y(jié)尾
my_str6 = my_str.endswith('cpp')
print(my_str6)
- 8.upper 把字符串的所有變?yōu)榇髮?my_str7 = my_str.upper()
print(my_str7)
- 9.lower 字符串的所有變?yōu)樾?/li>
my_str8 = my_str7.lower()
print(my_str8)
- 10.rjust 返回一個(gè)原字符串右對(duì)對(duì)齊的并用空格填充 width長(zhǎng)度的新字符串
my_str_space = 'hello'
new_my_str_space = my_str_space.rjust(11)
print(len(new_my_str_space))
print(new_my_str_space)
- 11.ljust 返回一個(gè)原字符串左對(duì)齊對(duì)對(duì)齊的并用空格填充?。鳎椋洌簦栝L(zhǎng)度的新字符串
new_my_str_space1 = my_str_space.ljust(100)
print(new_my_str_space1)
print(len(new_my_str_space1))
- 12.center()
new_my_str_space2 = my_str_space.center(50)
print(new_my_str_space2)
print(len(new_my_str_space2))
- 13.lstrip 清除字符串左邊的空白字符
print(new_my_str_space2)
print(len(new_my_str_space2)) # 50
new_str2 = new_my_str_space2.lstrip()
print(len(new_str2))
print(new_str2)
- 14.rstrip()清除字符串右邊的空白字符
new_str3 =new_str2.rstrip()
print(len(new_str3)) # 5
print(new_str3)
- 15.strip() 刪除兩端的空白字符
str1 = '\n\tdadadad\t'
print(len(new_my_str_space2))
new_str4 = new_my_str_space2.strip()
print(len(new_str4))
print(len(str1))
str2 = str1.strip()
print(len(str2))
- 16.find ---> rfind
index5 = my_str.rfind('neuedu')
print(index5)
rindex ------> index
- 17.partition 把mystr以str分割成3部分 str前,str , str后
print(my_str)
t_mystr = my_str.partition('neuedu')
print(t_mystr) # 元組
- 18.rpartition 從右邊開始
- 19.splitlines 按照行分隔,返回一個(gè)包含各行作為元素的列表
line = 'hello\nworld'
print(line)
list_line = line.splitlines()
print(list_line)
- 20.isalpha 判斷字符串是否都是字母 返回True或False
alpha = my_str.isalpha()
print(alpha)
alpha2 = 'dddddddd'
alpha3 = alpha2.isalpha()
print(alpha3)
- 21.isalnum 判斷是否只有字母或者數(shù)字
alpha2.isalnum()
2.列表
- 列表的排序
sort()和sorted()的區(qū)別:
<1>.sort() 是對(duì)原來(lái)的列進(jìn)行排序,sorted()是返回一個(gè)新的列表,原來(lái)的沒(méi)有改變
<2>.sort() 是屬于列表的成員方法,sorted()是對(duì)所有可迭代的對(duì)象的方法
<3>.ls.sort(key reverse) ;sorted(ls)
from random import randint
# import random
num = randint(-10, 10) # [-10,10]
# print(num)
num_list = []
for _ in range(10):
num_list.append(randint(1, 20))
print(num_list)
# sort()
num_list.sort()
print('正序排序:', num_list)
num_list.sort(reverse=True)
print('逆序排序:', num_list)
# sorted()
new_list = sorted(num_list)
print(num_list)
print(new_list)
- 列表的添加
1.append()用法
list.append(obj)
obj表示新增元素
str = input('請(qǐng)輸入您要添加的內(nèi)容')
name_list.append(str)
2.insert()用法
在指定位置前插入元素object
list.insert(index, obj)
index 表示對(duì)象 obj 需要插入的索引位置。
obj 表示要插入列表中的對(duì)象。
a = [0,1,2]
a.insert(1, 10)
print(a)
3.extend()用法
可以將另外一個(gè)集合主意添加到列表中
list.extend(seq)
seq 表示元素列表
a = [1, 2]
b = [3, 4]
a.append(b)
print(a)
a.extend(b)
print(a)
- 列表的修改
name_list[1] = '小明'
print(name_list)
- 查找
in; not in
find_name = '和平締造者'
if find_name not in name_list:
print('不在')
else:
print('在')
- 列表的刪除
del[下標(biāo)]
pop()
remove()
del :根據(jù)下標(biāo)進(jìn)行刪除
del name_list[0]
print('刪除hou', name_list)
pop 刪除最后一個(gè)元素
name_list.pop()
print('刪除hou', name_list)
remove 根據(jù)元素的值進(jìn)行刪除
name_list.remove('xiaoming')
print('刪除后', name_list)
- 列表的二維嵌套
school_name = [['qinghua', 'beida'], ['nankai', 'tianda'], ['dongqin', 'yanda']]
print(school_name)
print(school_name[0][1])
# "print(school_name[0, 1])"這種寫法在此處不可
- 列表推導(dǎo)式:輕量級(jí)循環(huán)列表
# list1 = []
# for i in range(10):
# list1.append(i)
# print(list1)
list2 = [i for i in range(10)]
print(list2)
list3 = ["法蘭" for _ in range(5)]
print(list3)
# [ _ for i in range]
- 分配工作問(wèn)題
# 一個(gè)學(xué)校,三個(gè)辦公室,現(xiàn)在有8位老師等待工作的分配
import string
from random import randint
# import random.randint as rit
# 定義3個(gè)辦公室
offices = [[], [], []]
# 定義8為老師
names = string.ascii_uppercase[:8]
# names = list(names)
print(names)
for name in names:
# 產(chǎn)生一個(gè)隨機(jī)數(shù)[0,2]
index = randint(0,2)
offices[index].append(name)
print(offices)
i = 1
for tempNames in offices:
print('辦公室{}的人數(shù)為{}'.format(i, len(tempNames)))
i += 1
print('成員為:')
for name in tempNames:
print('{}'.format(name),end='')
print('\n')
print('~'*30)
列表轉(zhuǎn)字符串
list = str(list)同時(shí)遍歷
zip() 用于將可迭代對(duì)象作為參數(shù),將對(duì)象中的對(duì)應(yīng)的與元素打包成
一個(gè)元組,然返回這些元組對(duì)象 節(jié)約內(nèi)存
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7 ,8]
zipped = zip(a, b)
print(zipped)
print(list(zipped))
zipped1 =zip(a, c)
print(list(zipped1)) #長(zhǎng)度不一致,與最短的對(duì)象相同
示例:
guns = ['mp18', 'm1918']
bullet_num = ['32', '24']
for guns, bullet_num in zip(guns, bullet_num):
print(guns, '---->',bullet_num)
3.元組
元組不能修改,不能刪除
- 訪問(wèn)
a = ('ddd',111,0.88)
print(type(a))
print(a[0])
- 1.index() 返回改元素在元組中第一次出現(xiàn)的位置
2.count() 返回目標(biāo)元素在元組中的個(gè)數(shù)
a = ('a', 'b','c', 'b', 'a')
index1 = a.index('a')
print(index1)
c = a.count('b')
0
2
4.字典
key ----> value
- 訪問(wèn)
1.dict['key'](訪問(wèn)不存在的鍵會(huì)報(bào)錯(cuò))
info = {'name': '劉強(qiáng)東', 'age': 45, 'id': 32453432543, 'address': '北京'}
# 訪問(wèn) 根據(jù) 鍵進(jìn)行訪問(wèn)
print(type(info))
print(info['name'])
# 訪問(wèn)不存在的鍵會(huì)報(bào)錯(cuò)
# print(info['sex'])
<class 'dict'>
劉強(qiáng)東
2.get()
# 使用get()方法
age = info.get('age')
print(age)
mail = info.get('mail')
print(mail)
45
None
當(dāng)我們不確定字典中是否存在某個(gè)key,而且還要獲得其value,可以使用get設(shè)置默認(rèn)值
mail = info.get('mail', '122@jingdong.com') # 設(shè)置默認(rèn)值(沒(méi)有時(shí)才起作用)
print(mail)
122@jingdong.com
- 修改(通過(guò)key)
# 修改
info['name'] = '馬云'
print(info)
{'name': '馬云', 'age': 45, 'id': 32453432543, 'address': '北京'}
- 添加(通過(guò)key)
# 添加元素
info['sex'] = '男性'
print('添加后:', info)
添加后: {'name': '劉強(qiáng)東', 'age': 45, 'id': 32453432543, 'address': '北京', 'sex': '男性'}
- 刪除
# del info['name']
# print('刪除后:', info)
# # del info 刪除整個(gè)字典,再訪問(wèn)時(shí)會(huì)報(bào)錯(cuò)
# clear
info.clear()
print('after clear ', info)
after clear {}
- 字典的常用操作
print(len(info)) # k-v 的個(gè)數(shù)
keys = info.keys()
print(keys)
values = info.values()
print(values)
# (keys,value)
items = info.items()
print(items)
4
dict_keys(['name', 'age', 'id', 'address'])
dict_values(['劉強(qiáng)東', 45, 32453432543, '北京'])
dict_items([('name', '劉強(qiáng)東'), ('age', 45), ('id', 32453432543), ('address', '北京')])
4.集合
無(wú)序性 唯一性
一般用于元素去重
set1 = {1, 2, 5, 4} #集合
- 添加 add()
set1.add(8)
print(set1)
{1, 2, 4, 5, 8}
- 刪除
1.remove()不存在會(huì)報(bào)錯(cuò)
# 刪除
# 不存在會(huì)報(bào)錯(cuò)
set1.remove(1)
print(set1)
2.pop()隨機(jī)刪除集合中的元素,集合中沒(méi)有會(huì)報(bào)錯(cuò)
# pop 隨機(jī)刪除集合中的元素,集合中沒(méi)有會(huì)報(bào)錯(cuò)
set1.pop()
print(set1)
3.discard()
# discard 存在直接刪除,不在則不做任何操作
set1.discard(3)
set1.discard(4)
print(set1)
{1, 2, 5, 8}
5.字典解析和集合解析實(shí)例
- 字典解析
# 隨機(jī)創(chuàng)建一個(gè)班級(jí)的分?jǐn)?shù)
from random import randint
grades = {'student{}'.format(i): randint(50, 100) for i in range(1, 21)}
print(grades)
# 篩選出高于90分的人
d = {k: v for k, v in grades.items() if v >= 90}
print(len(d))
print(d)
- 集合解析
# 隨機(jī)創(chuàng)建一個(gè)班級(jí)的分?jǐn)?shù)
set1 = {randint(0, 20) for _ in range(20)}
print(set1)
# 找到能整除3的
res = {x for x in set1 if x % 3 == 0}
print(res)
6.函數(shù)
def 函數(shù)名(num):
pass
- 示例
def caculateNum(num):
'''
計(jì)算?。薄玭um 之間的累加和
:param num: 累加和的末尾
:return: 累加和
'''
res = 0
for i in range(1, num+1):
res += i
return res
r = caculateNum(100)
print(r)
5050