1、 列表
列表:python基礎數據類型之一:其餘語言中也有列表的概念,js 數組,可索引,可切片,可加步長
li = ['hello', 100, True, [1, 2, 3], {'name':'goodboy'},(22, 33)]
列表能夠存儲大量的數據,32位python的限制是 536870912 個元素,64位python的限制是 1152921504606846975 個元素。python
注意:
字符串使用了字符串的方法後,造成的是新的字符串,與原字符串沒有任何關係,
必需要用新的變量接收這個新的字符串,或者能夠直接能夠用print打印api
列表使用列表的方法後,是對自己列表進行修改,因此不能直接打印數組
例如:app
list1 = [9, 2, 7, 6, 1, 3] print(list1.sort()) # 這樣打印的結果是None list1 = [9, 2, 7, 6, 1, 3] list1.sort() print(list1) # 這樣打印的結果纔是排序後的結果,list1.sort()是對自己list1進行修改的操做 #並非新的列表 #即先調用方法對自己(list1) # 進行修改,再使用修改後的list1 # 而字符串: msg = 'hello' print(msg.upper()) # 能夠直接打印出大寫的HELLO,由於調用了upper方法後 # 造成的是一個新的字符串,msg.upper() # 表明一個新的字符串
2、 列表的索引,切片,步長(與字符串的索引,切片,步長類似)
存進去的數據是什麼類型,拿出來的就是什麼類型post
li = ['hello', 100, True, [1, 2, 3], {'name':'goodboy'},(22, 33)] print(li[0],type(li[0])) print(li[1],type(li[1])) print(li[2],type(li[2])) print(li[:4]) print(li[::2]) print(li[-1:-4:-2]) print(li[-1:2:-2])
3、 列表的經常使用操做this
# 增刪改查和其餘方法。 l1 = ['hello', 'hi', 'handsome', 'boy', 'is', 'me', 'jian'] # 增: # append :在末尾追加 l1.append('小老師') print(l1.append([1, 2, 3])) print(l1) # 應用: name_list = ['趙三', '李四'] while 1: username = input('請輸入新員工姓名:').strip() if username.upper() == 'Q': break name_list.append(username) print(name_list) # insert:插入,選擇在哪一個位置插入 l1.insert(1, '小哥') print(l1) # extend:迭代着在末尾追加 l1.extend('abc') l1.extend([111, 222, 333]) l1.extend(['shuai', 'ge']) print(l1) # 刪除: # pop:按照索引去刪除(不寫索引,默認刪除最後一個) # pop按照索引刪除,有返回值(列表方法只有pop有返回值,返回的是被刪除的元素,並非返回一個列表) ret = l1.pop(0) # 刪除第一個元素
ret2 = l1.pop() #刪除最後一個元素 print(ret) # 返回值 print(l1) # 被刪除了一個元素的列表l1
# remove:按照元素刪除 l1.remove('hello') print(l1) # clear:清空 l1.clear() print(l1) # del:刪除 # 1,能夠按照索引刪除 del l1[0] print(l1) # 2,能夠按照切片刪除(能夠加步長) del l1[:2] del l1[3:] del l1[1::2] print(l1) # 3,能夠在內存級別刪除整個列表 del l1 print(l1) # 改: # 按照索引改: l1[2] = '男神' l1[-1] = '泰迪' # 按照切片改:先清空切片的內容,再把要添加的內容迭代加入進去 l1[:2] = 'sbsbsb' # ['s', 'b', 's', 'b', 's', 'b', 'handsome', 'boy', 'is', 'me', 'jian'] l1[:4] = [11, 22, 33, 44, 55, 66, 77] # [11, 22, 33, 44, 55, 66, 77, 's', 'b', 'handsome', 'boy', 'is', 'me', 'jian'] # 按照切片加步長:一一對應,即對應着改 l1[:3:2] = 'af' print(l1) # 查: # 索引,切片,切片 + 步長 # for 循環 for i in l1: print(i) # 其餘方法: print(len(l1)) # 查詢總長度 print(l1.count('hello')) # 某個元素出現的次數 # index:經過元素找索引 print(l1.index('hi')) l2 = [5, 6, 7, 1, 4, 3, 2, 9] # sort:從小到大排序 l2.sort() print(l2) l2.sort(reverse=True) # 從大到小排序 print(l2) l2.reverse() # 反轉,從最後一個倒着排序 print(l2)
4、 列表的嵌套spa
l3 = ['hello', 'jiange', ['handsome', 18, 'good'], 20] # 1,找到hello的e元素。 # 方法一 s1 = l3[0] print(s1[1]) # 方法二 s2 = l3[0][1] print(s2) # 2,將jiange變成大寫。 w1 = l3[1] w2 = w1.upper() l3[1] = w2 # l3[1] = l3[1].upper() print(l3) # 3,給此列表['handsome', 18, 'good']追加一個元素, '腦殘兒' l3[2].append('腦殘兒') print(l3) # 4,將'handsome'首字母大寫。 s1 = l3[2][0].capitalize() l3[2][0] = s1 # l3[2][0] = l3[2][0].capitalize() # 爲何列表能夠直接追加,而字符串要從新賦值呢 # 由於字符串的操做是造成新的字符串與原來的字符串沒有任何關係 # 因此要把新的字符串從新賦值給指定的位置 # 列表的增刪改都是對自己進行操做,因此自己已經被修改了,不須要從新賦值 # 例如: l3[2][0].capitalize() # 這裏生成的是新的字符串,而自己l3[2][0]的字符串並無修改 l3[2].append(666) # 這裏是直接對l3[2]這個列表進行追加,直接修改了l3[2]這個列表 print(l3) # 結果是l3[2][0]並無修改,而l3[2]則追加了 666 l3[2][0] = l3[2][0].capitalize() # 把新的字符串賦值給l3[2][0] print(l3) # 結果是l3[2][0]修改了 # 5,將18經過數字加1的方式變成19,並放回原處。 l3[2][1] = l3[2][1] + 1 # l3[2][1] += 1 print(l3)
5、range
range:自定製的,數字範圍的,可迭代對象,類比成列表
range(1,101)
print(range(1,101))code
range() 通常和for 循環結合使用。
for i in range(1,11):
print(i)對象
for i in range(1,20,2):
print(i)blog
for i in range(1,101,2):
print(i)
for i in range(10,1,-1):
print(i)
l1 = ['hello','hello','jiange', ['handsome', 18, 'good'], 20]
輸出l1的全部元素的索引值
方法一:很差,由於有重名元素時會返回同一個值
for i in l1:
print(l1.index(i))
方法二:
for i in range(0,len(l1)):
print(i)
6、in not in
s1 = 'hello'
l1 = ['hello','hello','jiange', 'handsome', 18, 'good', 20]
print('h' in s1) #True
print('he' in s1) #True
print('heo' in s1) #False
print('hello' not in l1) #False
print(['hello','hello'] in l1) #False
7、元組
元組:只讀列表,只容許查詢,不容許增刪改
應用場景: 一些很是重要的數據,不容許全部人修改的,放在元組中。
一、元組中只包含一個元素時,須要在元素後面添加逗號來消除歧義
tup1=(50,)
若是元組中只有一個數據,且沒有逗號,那麼該"元組"的數據類型與裏面的數據類型一致
不然,該數據類型就是元組
tu1 = (1)
print(tu1,type(tu1)) ---> 1 int
tu1 = (1,)
print(tu1,type(tu1)) ---> (1,) tuple
tu2 = ('hello')
print(tu2,type(tu2)) ---> hello str
tu2 = ('hello',)
print(tu2,type(tu2)) ---> ('hello',) tuple
二、元組中的元素值使不容許修改的,但能夠對元組進行鏈接組合
tup1=(12,34.56)
tup2=('abc','xyz')
tup1[0]=100 #非法操做,元組中的元素是不容許被修改的
tup3=tup1+tup2 #python容許元組進行鏈接組合
print(tup3)# 輸出:(12,34.56,'abc','xyz')
三、元組中的元素是不容許刪除的,但可使用del語句來刪除整個元組
del tup1
四、元組之間可使用+和*,即容許元組進行組合鏈接和重複複製,運算後會生成一個新的元組
tup1=(1,2,3)
tup2=(3,4,5)
tup3=tup1+tup2 #輸出:tup3=(1,2,3,3,4,5)
tup4=tup1*3 #輸出: tup4=(1,2,3,1,2,3,1,2,3)
五、元組的查(沒有增改,刪只能刪除整個元組)可用切片操做和for循環
索引,切片,切片+步長
print(tu1[0])
print(tu1[:3])
for 循環
for i in tu1:
print(i)
六、任意無符號的對象,以逗號隔開,默認爲元組
1 a=1,2,3,'hello'
2 print(a) #輸出:(1,2,3,'hello')
七、方法:index,len,count
元組:兒子不能改,孫子可能能夠改。(直接的元素就是兒子,元素裏的元素是孫子)
tu1[3].append(666) #能夠
tu1.append(666) #錯的
print(tu1)