列表
list 可以存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)
name_list = ['魯班', 'xiaoming', 1024]
name_list
['魯班', 'xiaoming', 1024]
type(name_list)
list
# 訪問
name_list[0]
'魯班'
# 遍歷
for name in name_list:
print(name)
魯班
xiaoming
1024
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
魯班
xiaoming
1024
列表的相關(guān)操作
# 查看列表的方法
print(dir([]))
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
<1> 添加操作
append()
在指定位置后插入
str = input('請(qǐng)輸入你想添加的內(nèi)容:')
name_list.append(str)
print('添加后:',name_list)
請(qǐng)輸入你想添加的內(nèi)容: 小麗
添加后: ['魯班', 'xiaoming', 1024, '小麗']
list1 = []
for i in range(10):
list1.append(i)
print(list1)
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
insert()
在指定位置 index 前插入元素 object
a = [0,1,2]
a.insert(1,10) # (位置索引媳握,對(duì)象)
a
[0, 10, 1, 2]
extend()
將另外一個(gè)集合逐一的添加到列表中
a = [1, 2]
b = [3, 4]
a.extend(b)
print(a)
[1, 2, 3, 4]
a.append(b)
a
[1, 2, 3, 4, [3, 4]]
<2> 修改操作
name_list[1] = '小明'
name_list
['魯班', '小明', 1024, '小麗']
<3> 查詢操作
根據(jù)內(nèi)容查詢
find_name = '小明'
if find_name in name_list:
print('小明在搏恤!')
else:
print('buzai')
小明在偎箫!
根據(jù)索引查詢
# index()查找元素第一次出現(xiàn)的位置
a = ['a', 'b', 'c', 'a', 'b']
index = a.index('c',1, 3) # [1,3) 內(nèi)查找
index
2
根據(jù)內(nèi)容查詢出現(xiàn)的次數(shù)
a.count('b')
2
<4> 刪除操作
del 根據(jù)下標(biāo)刪除
pop 刪除最后一個(gè)元素
remove 根據(jù)元素值進(jìn)行刪除
name_list = ['魯班', 'xiaoming', 1024]
print('刪除前:', name_list)
del name_list[0]
print('刪除后:', name_list)
刪除前: ['魯班', 'xiaoming', 1024]
刪除后: ['xiaoming', 1024]
name_list = ['魯班', 'xiaoming', 1024]
print('刪除前:', name_list)
name_list.pop()
print('刪除后:', name_list)
刪除前: ['魯班', 'xiaoming', 1024]
刪除后: ['魯班', 'xiaoming']
當(dāng) pop 指定索引后也可以指定位置刪除。
name_list = ['魯班', 'xiaoming', 1024]
print('刪除前:', name_list)
name_list.pop(-2)
print('刪除后:', name_list)
刪除前: ['魯班', 'xiaoming', 1024]
刪除后: ['魯班', 1024]
name_list = ['魯班', 'xiaoming', 1024]
print('刪除前:', name_list)
name_list.remove('xiaoming')
print('刪除后:', name_list)
刪除前: ['魯班', 'xiaoming', 1024]
刪除后: ['魯班', 1024]
列表的排序
from random import randint
num = randint(-10, 10) # 生成 [10,10] 范圍內(nèi)的隨機(jī)數(shù)
num_list = []
for _ in range(10):
num_list.append(randint(1, 20))
print(num_list)
[20, 8, 2, 8, 6, 18, 16, 1, 20, 15]
num_list.sort()
print(num_list)
num_list.sort(reverse = True) # 逆序排序
print(num_list)
[1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
[20, 20, 18, 16, 15, 8, 8, 6, 2, 1]
kk = sorted(num_list)
print(kk)
print(num_list)
num_list.sort()
print(num_list)
# 區(qū)別
# .sort() 對(duì)原來的列表進(jìn)行修改排序
# sorted(num_list)對(duì)原來的沒有改變
# .sort() 是列表的成員方法
# sorted 可以對(duì)所有可迭代對(duì)象進(jìn)行操作
# ls.sort() sorted(ls) 調(diào)用方式不同
[1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
[20, 20, 18, 16, 15, 8, 8, 6, 2, 1]
[1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
列表的嵌套
列表的列表
school_name = [['清華', '北大'],['南開', '天大'],['東秦', '燕山']]
school_name
[['清華', '北大'], ['南開', '天大'], ['東秦', '燕山']]
print(school_name[0][1])
# numpy中可以 school_name[0, 1] 訪問
北大
列表推導(dǎo)式
列表推導(dǎo)式就是指 使用輕量級(jí)循環(huán)創(chuàng)建列表
list1 = []
for i in range(10):
list1.append(i)
print(list1)
list2 = [i for i in range(10)]
print(list2)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list3 = [i for i in range(2, 17, 2)]
list3
[2, 4, 6, 8, 10, 12, 14, 16]
list1 = []
for _ in range(10):
list1.append('不給我魯班我就送')
print(list1)
list4 = ["不給我魯班我就送" for _ in range(10)]
print(list4)
['不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送']
['不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送', '不給我魯班我就送']
from random import randint
l = [randint(-10,10) for _ in range(10)] # 生成 10 個(gè)元素势誊,范圍在【-10,10】區(qū)間的列表
print('原列表:', l)
# 選出大于等于 0 的數(shù)據(jù)
res = []
for x in l:
if x>= 0:
res.append(x)
print("使用for循環(huán)篩選:", res)
# 循環(huán)的過程中使用 if
res2 = [x for x in l if x >= 0]
print("使用列表推導(dǎo)式刪選:", res2)
原列表: [-2, 9, -9, -1, 3, 2, -2, -5, -2, -7]
使用for循環(huán)篩選: [9, 3, 2]
使用列表推導(dǎo)式刪選: [9, 3, 2]
列表與字符串
my_list = ['welcome', 'to', 'Ml', 'world']
my_list_to_str = str(my_list) # 效果不好
print(my_list_to_str)
print(' '.join(my_list))
print('_'.join(my_list))
['welcome', 'to', 'Ml', 'world']
welcome to Ml world
welcome_to_Ml_world
# 列表和字符串的 *
str1 = 'hehe'*3
print(str1)
list4 = ['6', 9, 0]*5
print(list4)
hehehehehehe
['6', 9, 0, '6', 9, 0, '6', 9, 0, '6', 9, 0, '6', 9, 0]
# 練習(xí)
numbers = [i for i in range(11)]
print(numbers)
# 篩選出偶數(shù)的數(shù)據(jù)
numbers2 = []
for number in numbers:
if number%2 == 0:
numbers2.append(number)
print(numbers2)
number3 = [number for number in numbers if number%2 == 0]
print(number3)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]
# 練習(xí)2
# 一個(gè)學(xué)校有三個(gè)辦公室鹿寨,有八個(gè)老師隨機(jī)分派 完成隨機(jī)分派
import string
# import random.randint as randint
from random import randint
# 定義辦公室
offices = [[],[],[]]
# 定義老師
names = list(string.ascii_uppercase[:8])
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','-'*30)
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
[['F'], ['A', 'B'], ['C', 'D', 'E', 'G', 'H']]
辦公室1的中的人數(shù)為1
成員為:
F
------------------------------
辦公室2的中的人數(shù)為2
成員為:
AB
------------------------------
辦公室3的中的人數(shù)為5
成員為:
CDEGH
------------------------------