# 下標也是索引
my_str = 'hello'
print(my_str[0]) # 負數從-1開始
print(my_str[-1])
# [start:end:step]
# step默認為1,表示下標之間的間隔
# 不包含end對應的下標
print(my_str[2:4:1])
# end位置不寫,表示是len(),即可以取到最後一個元素
my_str3 = my_str[2:]
print(my_str3)
# start位置不寫,表示0開始
my_str4 = my_str[:3] # 注意3的位置取不到
print(my_str4)
# start和end都不寫,但是需要冒號
my_str5 = my_str[:]
print(my_str5)
print(my_str[-4: -1]) # -1位置取不到 ell
print(my_str[3:1]) # 沒有結果輸出
print(my_str[3:1:-1], '2') # ll 2
print(my_str[::-1]) # 字符串的逆值, olleh
print(my_str[::2]) # 0 2 4 h l o == my_str[0:5:2]
find() & rfind()
my_str = 'hello world itcast and itcastcpp'
# find() 在字符串中查找是否存在某個字符串
# my_str.find(sub_str,start,end)
# sub_str: 要在字符串中查找的內容,類似str
# start :開始查找位置 ,默認0
# end: 結束的位置,查找到哪裡結束,默認是len()
# 返回值:即方法執行的結果是什麼,如果找得到sub_str, 返回的sub_str 在 my_str中的位置的正數下標
# 如果沒有找到,那麼返回-1
index = my_str.find('hello')
print(index) # hello 在my_str下標為0的位置
# 從下標為3的位置找字符串 hello
print(my_str.find('hello', 3))
print(my_str.find('itcast')) # 12 加上空格
print(my_str.find('itcast', 15)) # 23
# rfind() right find() 從右邊(後邊) 開始查找
print(my_str.rfind('itcast')) # 23
index & rindex() ------沒有找到會直接報錯
print(my_str.index('hello')) # 0
# print(my_str.index('hello', 5)) # error
print(my_str.rindex('itcast')) # 23
print(my_str.index('itcast')) # 12 加上空格,下標從0開始
count()---統計出現的次數
print(my_str.count('aaaa')) # 0
print(my_str.count('hello')) # 1
print(my_str.count('itcast')) # 2
print(my_str.count('itcast'), 20) # 1 ,從20號以後itcast出現的次數
字符串替換 replace
# my_str.replace(old_str, new_str, count)
# old_str: 將要被替換的字符串
# new_str: 替換成的字符串
# count: 替換的次數,默認全部替換
# 返回值:得到一個新的字符串,不會改變原來的字符串
my_str = 'hello world itcast and itcastcpp'
my_str1 = my_str.replace('itcast', 'itheima')
print('my_str:', my_str)
print('my_str1:', my_str1)
my_str2 = my_str.replace('itcast','itheima', 1) # 替換一次
print('my_str2:%s' % my_str2)
字符串分隔 split()
# 字符串分割split()
result = my_str.split()
print(result)
print(my_str.split('itcast')) # 默認全部切割
print(my_str.split('itcast', 1)) # 切割1次
print(my_str.rsplit('itcast', 1)) # 從最右邊開始切割
字符串連接 join()
# join()
# my_str.join(可迭代對象)
my_str = '_'.join('hello')
print(my_str)
print('_*_'.join('hello'))
# 定義列表
my_list = ['hello', 'cpp', 'python']
print("_".join(my_list))
print("_*_".join(my_list))
print(" ".join(my_list))
列表是python中的一種數據類型,可以存放多個數據,列表中的數據可以是任意類型的
列表list,定義使用[],進行定義。
# 定義空列表
my_list = []
print(my_list, type(my_list)) # '[]' , <class 'list'>
my_list1 = list() # 空列表
print(my_list1, type(my_list1))
# 定義帶數據的列表,數據元素之間用逗號隔開
my_list2 = [1, 3.14, True, 'isaac']
print(my_list2, type(my_list2)) # [1, 3.14, True, 'isaac'] <class 'list'>
# 求列表中數據元素的個數,即列表的長度
num = len(my_list2)
print(num)
# 列表支持下標和切片操作
print(my_list2[1]) # 3.14
print(my_list2[-1]) # isaac
print(my_list2[1:3]) # [3.14,True] 因為左閉右開
# 下標操作和字符串中不同的是:字符串不能使用下標修改其中的數據,但是列表可以使用下標修改列表中的數據
my_list2[0] = 18
print(my_list2)
my_list2[-1] = 'hello'
print(my_list2)
my_list2[0] = 'python'
print(my_list2)
# 輸出結果
D:\Python\Day03String\venv\Scripts\python.exe D:/Python/Day03String/list.py
[] <class 'list'>
[] <class 'list'>
[1, 3.14, True, 'isaac'] <class 'list'>
4
3.14
isaac
[3.14, True]
[18, 3.14, True, 'isaac']
[18, 3.14, True, 'hello']
['python', 3.14, True, 'hello']
# 遍歷
my_list = ['A', 'B', 'C', 'D']
for i in my_list:
print(i, end=' ')
print()
print('*' * 30)
j = 0
while j < len(my_list):
print(my_list[j], end=' ')
j += 1
# 向列表中添加數據
# 向列表中添加數據的方法,都是直接在原列表中進行添加的,不會返回新的列表
my_list = ['A', 'B', 'C', 'D']
print(my_list)
# 列表.append(數據),向列表尾部追加數據
my_list.append('aa')
print(my_list)
result = my_list.append('12') # 不要這樣書寫
print(result) # 不要這樣書寫,結果為‘None’
print(my_list) # ['A', 'B', 'C', 'D', 'aa', '12']
# 列表.insert(下標, 數據) 在指定的下標位置進行添加數據
my_list.insert(0, 'isaac')
print(my_list)
# print(my_list.insert(5, 3.14)) None
# 列表.extend(可迭代對象) # str 列表,會將可迭代對象中的數據逐個添加到原列表的末尾
my_list.extend('he')
print(my_list)
my_list.extend([1, 'python', 3])
print(my_list)
my_list = [1, 3.14, 'issca', False]
num = my_list.index(3.14) # 1
print(num)
# num1 = my_list.index(100) # 程序報錯,因為程序不存在
# count() 統計出現的次數
num3 = my_list.count(1)
print(num3)
# in/not in 判斷是否存在,存在是True,不存在時False,一般和if 結合使用
num4 = 3.14 in my_list # True
num4 = 3.14 not in my_list # False
print(num4)
# 根據下標刪除
# pop() 默認刪除最後一個數據
num = my_list.pop() # 9
print(num)
print(my_list)
num = my_list.pop(2) # 刪除下標為2的數據 即5
print(num)
print(my_list)
# del_列表[下標]
del my_list[1] # 刪除下標為1的數據2
print(my_list)
# 想要對列表中的數據進行排序,前提是列表中的數據類型是一樣的
my_list = [1, 5, 3, 7, 9, 6]
# 列表.sort()直接在列表中進行排序
# my_list.sort() # 默認是從小到大排序,即升序
# my_list.sort(reverse = True) # 通過reverse= True,從大到小排列
my_list1 = sorted(my_list)
my_list2 = sorted(my_list,reverse=True)
print(my_list)
print(my_list1)
print(my_list2)
my_list3 = ['a', 'b', 'c', 'd', 'e']
my_lise4 = my_list3[::-1]
print(my_list3)
print(my_lise4)
# 在原列表直接逆值
my_list3.reverse()
print(my_list3)
school_names = [['北京大學', '清華大學'], ['南開大學', '天津大學', '天津師范大學'], ['山東大學', '中國海洋大學']]
print(school_names[1])
print(school_names[1][1])
print(school_names[1][1][1])
# 山東大學
print(school_names[2][0])
# 全部遍歷
for schools in school_names:
for name in schools:
print(name)
有興趣自己跑一下代碼。。。
# 元組和列表非常相似,都可以存放多個數據,可以存放不同數據類型的數據
# 不同點:列表用[], 元組使用()
# 列表中的數據可以修改,元組中的數據不能被修改
my_lists = [18, 3.14, True, 'issca']
my_tuple = (18, 3.14, True, 'issca')
print(my_tuple, type(my_tuple))
# 元組支持下標和切片要求
print(my_tuple[1])
# 定義空數組,沒有意義
my_tuple1 = ()
print(my_tuple1, type(my_tuple1))
my_tuple2 = tuple()
# 定義一個數據元素的元素,數據元素後邊,必須有一個逗號,否則報書寫錯誤
my_tuple3 = (3) # 3 <class 'int'>
my_tuple4 = (3,)
print(my_tuple3, type(my_tuple3))
print(my_tuple4, type(my_tuple4))
author : Empty bad uncle Blog