python 列表和元組

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)

相關文章
相關標籤/搜索