python 字符串去重从小到大排列_110道题整理(1-60)
import time
#21、列出python中可變數據類型和不可變數據類型,并簡述原理
'''
不可變數據類型:int型、字符串型str和元組tuple
不允許變量的值發生變化,如果改變了變量的值,相當于是新建了一個對象,內存中會有新地址,
而對于相同的值的對象,在內存中則只有一個地址
總結:變量的值不變,則內存地址不變
a = 1
b = 1
print(id(a)) 140703722169168
print(id(b)) 140703722169168
-------------
可變數據類型:列表list和字典dict;
允許變量的值發生變化,即如果對變量進行append、+=等這種操作后,
只是改變了變量的值,而不會新建一個對象,變量引用的對象的地址也不會變化
不過對于相同的值的不同對象,在內存中都有自己的地址
總結:變量名不變,則內存地址不變
a = [1,2]
b = [1,2]
print(id(a)) 1194884883080
print(id(b)) 1194884883144
'''
#22、s = "ajldjlajfdljfddd",去重并從小到大排序輸出"adfjl"
'''
s = "ajldjlajfdljfddd"
s = set(s)
s = list(s)
s.sort(reverse=False)
s = "".join(s)
#s = str(s) #['a', 'd', 'f', 'j', 'l']
print(s) #adfjl
注意:
1.字符串去重用set方法
2.去重之后,必須轉化為列表,是因為sort函數只能接收list類型的數據
3.sort方法沒有返回值,不要用變量接收
4.sort之后,用 "".join() 變成字符串
5.從小到大排列:reverse=False
'''
#23、用lambda函數實現兩個數相乘
'''
ret = lambda a,b:a*b
print(ret(3,4))
'''
#24、字典根據鍵從小到大排序
'''
sort 與 sorted 區別:
sort 是應用在 list 上的方法,屬于列表的成員方法
sorted 可以對所有可迭代的對象進行排序操作
list 的 sort 方法返回的是對已經存在的列表進行操作,
內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。
sort使用方法為ls.sort(),而sorted使用方法為sorted(ls)
sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
reverse:True反序;False 正序
print(dic.items()) #[('name', 'zs'), ('age', 18), ('city', '深圳'), ('tel', '1362626627')]
dic={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
lis = sorted(dic.items(),key=lambda d:d[0],reverse=False)
print(lis)
'''
#25、利用collections庫的Counter方法統計字符串每個單詞出現的次數
# "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
'''
from collections import Counter
s = "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
s = Counter(s)
print(s)
'''
#26、字符串a = "not 404 found 張三 99 深圳",每個詞中間是空格,
# 用正則過濾掉英文和數字,最終輸出"張三 深圳"
'''
思路:
1.先用正則找出不符合要求的數據
2.再根據原始的數據,遍歷兩個列表,把其中共同的部分刪掉
import re
a = "not 404 found 張三 99 深圳"
b = a.split(" ")
ret = re.findall('\d+|[a-zA-Z]+',a)
for i in ret: #['not', '404', 'found', '99']
if i in b: #['not', '404', 'found', '張三', '99', '深圳']
b.remove(i)
bb = " ".join(b)
print(ret)
print(bb)
--------------------
匹配小數的代碼
import re
aa = "not 404 55.66 found 張三 99 深圳"
bb = aa.split(" ")
ret = re.findall('\d+\.?\d*|[a-zA-Z]+',aa)
for i in ret:
if i in bb:
bb.remove(i)
cc = " ".join(bb)
print(ret)
print(cc)
'''
#27.filter方法求出列表所有奇數并構造新列表,
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
'''
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = list(filter(lambda x:x%2==1,a))
print(a) #filter(lambda x:x%2==1,a)
'''
#28、列表推導式求列表所有奇數并構造新列表,
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
'''
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ret = [i for i in a if i%2==1]
print(ret)
'''
#29、正則re.complie作用
'''
re.compile是將正則表達式編譯成一個對象,加快速度,并重復使用
text = "apple's price is $9.94,orange's price is $12.5"
#先編譯號提取的內容
r_obj = re.compile('\d+\.?\d*')
#直接傳入編譯內容和文本即可
ret = re.search(r_obj,text)
print(ret.group())
ret2 = re.findall(r_obj,text)
print(ret2)
'''
#30、a=(1,)b=(1),c=("1") 分別是什么類型的數據?
'''
a=(1,)
b=(1)
c=("1")
print(type(a)) #typle
print(type(b)) #int
print(type(c)) #str
'''
#31、兩個列表[1,5,7,9]和[2,2,6,8]合并為[1,2,2,3,6,7,8,9]
'''
l1 = [1,5,7,9]
l2 = [2,2,6,8]
l1.extend(l2)
l1.sort(reverse=False)
print(l1) #[1, 2, 2, 5, 6, 7, 8, 9]
'''
#32、用python刪除文件和用linux命令刪除文件方法
'''
python:os.remove(文件名)
linux: rm 文件名
'''
#33、log日志中,我們需要用時間戳記錄error,warning等的發生時間,
# 請用datetime模塊打印當前時間戳 “2018-04-01 11:38:54”
'''
import datetime
a = str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
print(a) #2019-04-16 17:27:33
#如果加上星期的話:
a = str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))\
+ ' 星期' + str(datetime.datetime.now().isoweekday())
print(a)
'''
#34、數據庫優化查詢方法
'''
外鍵,索引,聯合查詢,選擇特定字段等等
'''
#35.請列出你會的任意一種統計圖(條形圖、折線圖等)繪制的開源庫,第三方也行
'''
pychart、matplotlib
'''
#36、寫一段自定義異常代碼
'''
def foo():
try:
for i in range(6):
if i > 3:
raise Exception("數字大于3了")
print(i)
except Exception as e:
print(e)
if __name__ == '__main__':
foo()
'''
#37.正則表達式匹配中,(.*)和(.*?)匹配區別?
'''
(.*)是貪婪匹配,會把滿足正則的盡可能多的往后匹配
(.*?)是非貪婪匹配,會把滿足正則的盡可能少匹配
'''
#38.簡述Django的orm
'''
ORM,全拼Object-Relation Mapping,意為對象-關系映射
實現了數據模型與數據庫的解耦,通過簡單的配置就可以輕松更換數據庫,
而不需要修改代碼只需要面向對象編程,orm操作本質上會根據對接的數據庫引擎,
翻譯成對應的sql語句,所有使用Django開發的項目無需關心程序底層使用的
是MySQL、Oracle、sqlite....,如果數據庫遷移,只需要更換
Django的數據庫引擎即可
'''
#39、[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]
'''
l = [[1,2],[3,4],[5,6]]
ll = [j for i in l for j in i]
print(ll)
'''
#40、x="abc",y="def",z=["d","e","f"],
# 分別求出x.join(y)和x.join(z)返回的結果
'''
x="abc"
y="def"
z=["d","e","f"]
m = x.join(y)
print(m) #dabceabcf
n = x.join(z)
print(n) #dabceabcf
'''
總結
以上是生活随笔為你收集整理的python 字符串去重从小到大排列_110道题整理(1-60)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: textisselectable长按再点
- 下一篇: pls-00302: 必须声明 组件