日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python集合和字符串及练习

發(fā)布時間:2024/3/12 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python集合和字符串及练习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

集合

認識集合

1.認識集合(set)

  • 集合是容器型數(shù)據(jù)類型,將{}作為容器的標(biāo)志里面多個數(shù)據(jù)用逗號隔開:{數(shù)據(jù)1, 數(shù)據(jù)2, 數(shù)據(jù)3,…}
  • 可變的(支持增刪改);無序(不支持下標(biāo)操作)
  • 元素的要求:
    • 必須是不可變的數(shù)據(jù)
    • 元素是唯一
  • # 空集合 set1 = set() print(type(set1), len(set1))# 集合是無序的 print({1, 2, 3} == {3, 2, 1}) # True# 集合元素必須是不可變類型的數(shù)據(jù) set1 = {1, 'acb', True, (10, 20)} print(set1)# set2 = {1, 'acb', True, [10, 20]} # 報錯!# 集合元素是唯一 set3 = {10, 20, 10, 20, 30, 10} print(set3) # {10, 20, 30}names = ['張三', '李四', '張三', '王五', '張三'] print(set(names))

    2.集合的增刪改查(不重要)

  • 查 - 只能遍歷

    補充:用for循環(huán)遍歷無序序列的時候,系統(tǒng)在遍歷之前會自動將無序序列轉(zhuǎn)換成列表,然后再遍歷列表

    • 集合.add(元素) - 添加指定元素
    • 集合.update(序列) - 將序列中所有的元素都添加到集合中
  • 集合.remove(元素)

  • 3.數(shù)學(xué)集合運算

    python中使用的集合和數(shù)學(xué)集合是一個東西,并且支持數(shù)學(xué)集合運算

    python支持的數(shù)學(xué)集合運算:交集(&)、并集(|)、差集(-)、對稱差集(^)、子集(>=、<=)、真子集(>、<)

  • 交集 - 獲取兩個集合的公共部分

  • 并集 - 將兩個集合合并成一個集合

  • 差集

    集合1 - 集合2 - 獲取集合1中去掉包含在集合2中的部分剩下的部分

  • 對稱差集 - 將兩個集合合并然后去掉公共部分

  • 子集和真子集

    • 集合1 > 集合2 - 判斷集合2是否是集合1的真子集
    • 集合1 < 集合2 - 判斷集合1是否是集合2的真子集
  • set1 = {1, 2, 3, 4, 5} set2 = {3, 4, 5, 6, 7, 8}print(set1 & set2) # {3, 4, 5}print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8}print(set1 - set2) # {1, 2} print(set2 - set1) # {8, 6, 7}print(set1 ^ set2) # {1, 2, 6, 7, 8}print({1, 2} < {1, 2, 3}) # True print({100, 200, 300, 400, 1, 2} > {1, 2}) # True# {1, 2, 3} 真子集: {}、{1}、{2}、{3}, {1, 2}、{1, 3}、{2, 3} # {1, 2, 3} 子集: {}、{1}、{2}、{3}, {1, 2}、{1, 3}、{2, 3}, {1, 2, 3} # 練習(xí):用三個集合表示三門學(xué)科的選課學(xué)生姓名(一個學(xué)生可以同時選多門課) python = {'stu1', 'stu3', 'stu4', 'stu6', 'stu9', 'stu10'} java = {'stu2', 'stu3', 'stu5', 'stu6', 'stu9', 'stu10'} h5 = {'stu2', 'stu4', 'stu6', 'stu7', 'stu8', 'stu10'}# 1. 求選課學(xué)生總共有多少人 set1 = python | java | h5 print(len(set1))# 2. 求只選了第一個學(xué)科的人的數(shù)量和對應(yīng)的名字 set2 = python - java - h5 print(set2)# 5. 求選了三門學(xué)生的學(xué)生的數(shù)量和對應(yīng)的名字 set3 = python & java & h5 print(set3)# 3. 求只選了一門學(xué)科的學(xué)生的數(shù)量和對應(yīng)的名字 set4 = python ^ java ^ h5 - set3 print(set4)# 4. 求只選了兩門學(xué)科的學(xué)生的數(shù)量和對應(yīng)的名字 set5 = set1 - set3 - set4 print(set5)

    字符串

    字符串和字符

    1.什么是字符串(str)

  • 字符串是容器型數(shù)據(jù)類型;將’’、""、’’’’’’、""""""作為容器的標(biāo)志,引號里面的每一個符號都是字符串的元素(字符串的元素又叫字符)
  • 不可變的(不支持增刪改)、有序的(支持下標(biāo)操作)
  • 字符串的元素:一切符號都可以作為字符串的元素,字符串的元素又叫字符。字符分為兩種:普通字符和轉(zhuǎn)義字符
  • # 三個引號和一個引號的區(qū)別: str1 = 'abcsdfa' str2 = "abc123"str3 = '''abc123 阿士大夫和 阿士大夫和 愛撒嬌是'''str4 = """man愛斯達克加分號asd阿薩德發(fā)卡號阿薩德發(fā)卡號 """ print(type(str3), type(str4)) # <class 'str'> <class 'str'># 空串 str5 = '' print(len(str5)) # 0str6 = ' ' print(len(str6)) # 1# 字符可以是任何符號 str7 = 'sfhJAMF234沙士大夫~!@#$%([}?😁' print(str7)

    2.字符 - 字符串中的每個獨立的符號就是一個字符

    字符分為普通字符和轉(zhuǎn)義字符

  • 普通字符 - 表示符號本身的字符就是普通字符

  • 轉(zhuǎn)義字符 - 具備特殊功能或特殊意義的符號就是轉(zhuǎn)義字符。所有的轉(zhuǎn)義字符的通用格式:\X、\XXXX(轉(zhuǎn)義字符是通過\加普通字符構(gòu)成的,但是不是所有的普通字符前加\都可以變成轉(zhuǎn)義字符)

    \n - 換行 \t - 水平制表符(相當(dāng)于按一次tab鍵) \' - 一個單引號 \" - 一個雙引號 \\ - 一個反斜杠
  • ? 注意:所有的轉(zhuǎn)義字符的長度都是1

  • \u4位的十六進制數(shù) - 編碼字符(4位的十六進制數(shù)是字符在計算機中的編碼值)

    十六進制數(shù) - 每一位上的數(shù)可以是09或者af(A-F)

  • 字符編碼

    1.計算機存儲數(shù)據(jù)的原理

  • 計算機能夠直接存儲的數(shù)據(jù)只有數(shù)字,存數(shù)字的時候保存的時候數(shù)字的補碼。
  • 如果想要將非數(shù)字數(shù)據(jù)保存到計算機中,存儲的時候一定會先將數(shù)據(jù)轉(zhuǎn)換成數(shù)字。
  • 如果需要存儲的是文字,計算機會保存這個文字符號對應(yīng)的編碼值。
  • 2.字符編碼

    每個文字符號(字符)在計算機中都對應(yīng)一個固定的數(shù)字,這個數(shù)字就是這個符號的編碼值。

    3.字符編碼表 - 記錄每個符號和數(shù)字對應(yīng)關(guān)系的表

    常用編碼表: ASCII碼表、Unicode編碼表(Python)

  • ASCII碼表

    • ASCII碼表只有128個字符(不夠用)

    • 在ASCII碼表中:數(shù)字字符在字母的前面、大寫字母在小寫字母的前面、大寫字母和小寫字母之間有間隙、數(shù)字從0開始連續(xù)遞增,字母從(a/A)開始連續(xù)遞增

      a - 97

      A - 65

  • Unicode編碼表 - 是ASCII碼表的擴展,里面包含ASCII碼表

    • Unicode編碼表中包含了世界上所有的國家所有的民族的所有符號(萬國碼)
    • 中文編碼范圍:4e00 ~ 9fa5
  • 4.編碼值在python中的應(yīng)用

  • chr函數(shù): chr(編碼值) - 根據(jù)編碼值對應(yīng)的字符; 編碼值 - 整數(shù)
  • ord函數(shù): ord(字符) - 獲取字符對應(yīng)的編碼值; 字符 - 長度是1的字符串
  • 編碼字符
  • # 程序中直接表示一個16進制數(shù): 加前綴0x/0X for x in range(0x1800, 0x18AF+1):print(chr(x), end=' ')# hex(數(shù)字) - 將數(shù)字轉(zhuǎn)換成16進制 print(ord('余'), ord('婷'), ord('a')) print(hex(20313), hex(23159))# 編碼字符 str1 = 'a\u0061一\u4e00' print(str1)# 判斷指定的字符是否是中文字符 ch = '是' print('\u4e00' <= ch <= '\u9fa5') print(chr(0x9fa5))

    字符串常用操作

    1.查 - 獲取字符

    字符串獲取字符和列表獲取元素的語法一模一樣

    str1 = 'hello world!' print(str1[1], str1[-1])str2 = '\t123\u5fa3abc' print(str2[5])str1 = 'hello world!' print(str1[-3:]) # 'ld!' print(str1[-5::-1]) # 'ow olleh'for x in str1:print(x)

    2.字符串相關(guān)操作

  • +、*

    str1 = 'abc' str2 = '123' print(str1 + str2) # 'abc123' print(str1 * 3) # 'abcabcabc'
  • 比較大小: >、<、>=、<=

    兩個字符串比較大小,比較的是第一對不相等的字符的編碼值大小;

    應(yīng)用:判斷字符的性質(zhì)

    • 判斷字符x是否是數(shù)字字符: ‘0’ <= x <= ‘9’
    • 判斷字符x是否是小寫字母: ‘a(chǎn)’ <= x <= ‘z’
    • 判斷字符x是否是大寫字母: ‘A’ <= x <= ‘Z’
    • 判斷字符x是否是字母:‘a(chǎn)’ <= x <= ‘z’ or ‘A’ <= x <= ‘Z’
    • 判斷字符x是否是中文:’\u4e00’ <= x <= ‘\u9fa5’
  • in 和 not in

    字符串1 in 字符串2 - 判斷字符串1是在字符串2中(判斷字符串1是否是字符串2的子串)

    str1 = 'abc123' print('a' in str1) # True print('abc' in str1) # True print('23' in str1) # True print('13' in str1) # False
  • 作業(yè)

  • 輸入一個字符串,打印所有奇數(shù)位上的字符(下標(biāo)是1,3,5,7…位上的字符)

    例如: 輸入’abcd1234 ’ 輸出’bd24’

    str1 = input('請輸入一個字符串:') print(str1[1::2])
  • 輸入用戶名,判斷用戶名是否合法(用戶名長度6~10位)

    str2 = input('請輸入用戶名:') if 6 <= len(str2) <= 10:print('合法') else:print('不合法')
  • 輸入用戶名,判斷用戶名是否合法(用戶名中只能由數(shù)字和字母組成)

    例如: ‘a(chǎn)bc’ — 合法 ‘123’ — 合法 ‘a(chǎn)bc123a’ — 合法

    str3 = input('請輸入用戶名:') for x in str3:if '0' <= x <= '9' or 'A' <= x <= 'Z' or 'a' <= x <= 'z':continueelse:print('不合法')break else:print('合法')
  • 輸入用戶名,判斷用戶名是否合法(用戶名必須包含且只能包含數(shù)字和字母,并且第一個字符必須是大寫字母)

    例如: ‘a(chǎn)bc’ — 不合法 ‘Mabc’ — 不合法 ‘123’ — 不合法 ‘a(chǎn)bc123’ — 不合法 ‘Abc123ahs’ — 合法

    username = 'Masf123' if not 'A' <= username[0] <= 'Z':print('不合法') else:num_count = 0for x in username[1:]:if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'):# 如果出現(xiàn)不是字母數(shù)字的時候print('不合法')breakelse:# 在是數(shù)字或者字母的是判斷是否是數(shù)字if '0' <= x <= '9':num_count += 1else:# 沒有出現(xiàn)數(shù)字、字母以外的符號if num_count == 0:print('不合法')else:print('合法')
  • 輸入一個字符串,將字符串中所有的數(shù)字字符取出來產(chǎn)生一個新的字符串

    例如:輸入**‘a(chǎn)bc1shj23kls99+2kkk’** 輸出:'123992’

    str5 = input('請輸入一個字符串:') str0 = '' for x in str5:if '0' <= x <= '9':str0 += x print(str0)
  • 輸入一個字符串,將字符串中所有的小寫字母變成對應(yīng)的大寫字母輸出 (用upper方法和自己寫算法兩種方式實現(xiàn))

    例如: 輸入**‘a(chǎn)2h2klm12+’ ** 輸出 'A2H2KLM12+'

    # 方法一 str6 = input('請輸入一個字符串:') print(str6.upper())# 方法二 str0 = '' for x in str6:if 'a' <= x <= 'z':str0 += chr(ord(x) - 32)else:str0 += x print(str0)
  • 輸入一個小于1000的數(shù)字,產(chǎn)生對應(yīng)的學(xué)號

    例如: 輸入**‘23’,輸出’py1901023’** 輸入**‘9’, 輸出’py1901009’** 輸入**‘123’,輸出’py1901123’**

    # 9 -> 009 12 -> 012 234 -> 234 num = input('請輸入小于1000的數(shù)字:') result = 'py1901' + (3 - len(num)) * '0' + num print(result)result = 'py1901' + num.zfill(3) print(result)
  • 輸入一個字符串,統(tǒng)計字符串中非數(shù)字字母的字符的個數(shù)

    例如: 輸入**‘a(chǎn)nc2+93-sj胡說’** 輸出:4 輸入**’===’** 輸出:3

    str8 = input('請輸入一個字符串:') count = 0 for x in str8:if '0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z':continueelse:count += 1 print(count)
  • 輸入字符串,將字符串的開頭和結(jié)尾變成’+’,產(chǎn)生一個新的字符串

    例如: 輸入字符串**‘a(chǎn)bc123’, 輸出’+bc12+’**

    str1 = 'abc123' if len(str1) >= 2:result = '+' + str1[1:-1] + '+'print(result)
  • 輸入字符串,獲取字符串的中間字符

    例如: 輸入**‘a(chǎn)bc1234’** 輸出:‘1’ 輸入**‘a(chǎn)bc123’** 輸出**‘c1’**

    str10 = input('請輸入字符串:') if len(str10) % 2 == 1:print(str10[len(str10)//2]) else:print(str10[len(str10)//2-1]+str10[len(str10)//2])
  • 寫程序?qū)崿F(xiàn)字符串函數(shù)find/index的功能(獲取字符串1中字符串2第一次出現(xiàn)的位置)

    例如: 字符串1為:how are you? Im fine, Thank you! , 字符串2為:you, 打印8

    str1 = 'how are you? Im fine, Thank you!' str2 = 'you' len2 = len(str2)# 方法一: for index, item in enumerate(str1):if item == str2[0]:if str1[index:index + len2] == str2:print(index)break else:print('找不到')# 方法二 for index in range(len(str1)):if str1[index: index+len2] == str2:print(index)break else:print('找不到')
  • 獲取兩個字符串中公共的字符

    例如: 字符串1為:abc123, 字符串2為: huak3 , 打印:公共字符有:a3

    str1 = input('請輸入字符串1:') str2 = input('請輸入字符串2:') str12 = '' for x in str1:if x in str2:str12 += x print(str12)str1 = 'abac123' str2 = 'huak3'# 方法一: result = set(str1) & set(str2) new_str = '' for x in result:new_str += x print(new_str)result = ''.join(set(str1) & set(str2)) print(result)# 方法二 new_str = '' for x in str1:if x in str2 and x not in new_str:new_str += x print(new_str)
  • ?

    總結(jié)

    以上是生活随笔為你收集整理的Python集合和字符串及练习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。