python数据类型的补充
基础数据类型补充
- 字符串 str
-
字符串的方法及操作
str
s1 = 'aLExNb'
s2 = s1.capitalize() #capitalize首字母大写其它熊谢
print(s2) #Alexnbs3 = s1.swapcase() #swapcase大小写反转
print(s3) #AleXnBmsg = 'hello python, hello world' #title每个单词的首字母大写
print(msg.title()) #Hello Python, Hello Worlds1 = 'barry' #center 居中
print(s1.center(10)) # barrys1 = 'barry' #find 通过元素找索引,找到第一个就返回,找不到返回-1
print(s1.find('r')) #2
print(s1.find('x')) #-1s1 = 'barry' #index 通过元素找索引,找到第一个就返回,找不到报错
print(s1.index('x')) #ValueError: substring not found
print(s1.index('y')) #4
-
- 元组 tuple
-
#元组 tuple #元组中如果只有一个元素,并且没有逗号,那么它不是元组,它的数据类型与该元素的数据类型一致. tu1 = (1) print(tu1,type(tu1)) #1 <class 'int'> tu2 = ('alex') print(tu2,type(tu2)) # alex <class 'str'> tu3 = [1,2,3] print(tu3,type(tu3)) #[1, 2, 3] <class 'list'> # count 计数 tu = (1,1,2,3,4,4,4,4,4,5) print(tu.count(1)) #2 #index #通过元素找索引,找到第一个就返回 tu = ('taibai','alex','alex','yuanhao') print(tu.index('alex')) #1 print(tu.index('taibai')) #0
-
列表 list
列表 list
index
l1 = ['taibai','alex','laotan']
print(l1.index('alex')) #1sort 给原列表排序 默认从小到大
l1 = [3,8,9,7,5,2,1,6,4]
l1.sort()
print(l1) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
l1.sort(reverse=True) # 加上reverse=True从大到小
print(l1)#[9, 8, 7, 6, 5, 4, 3, 2, 1]
l1.reverse() #反转
print(l1) #[4, 6, 1, 2, 5, 7, 9, 8, 3]列表的相加
l1 = [1,2,3]
l2 = [1,2,'taibai','laotan','nanshen']
l1.extend(l2)
print(l1 + l2) #[1, 2, 3, 1, 2, 'taibai', 'laotan', 'nanshen', 1, 2, 'taibai', 'laotan', 'nanshen']
print(l1.extend(l2)) #None
print(l1) #[1, 2, 3, 1, 2, 'taibai', 'laotan', 'nanshen', 1, 2, 'taibai', 'laotan', 'nanshen']列表与数字相乘
l1 = [1,2,3]
print(l1*2) #[1, 2, 3, 1, 2, 3]删除索引为奇数对应的元素
l2 = [11,22,33,44,55] #此题有坑
先分析:我们想要删除索引为奇数的,则删除22与44元素,即l2 =[11,33,44]
如果我们按照正常思路来解决,就会掉坑里
下面是正常思路
for index in range(len(l2)):
if index %2 == 1:
l2.pop(index)
print(l2) #结果为:[11, 33, 44] 并不是我们想要的出现上次的结果是因为列表的特性:循环一次就会删除一次,删除一个元素后,后面的就会向前靠一位,就是顶替删除元素的位置举个例子
就是l1第一次删除为22元素,剩余的元素就组成l2元素即为:l2=[11,33,44,55]
在此列表中因为第一次索引为1,已经删除过了,此时索引为2的元素是44,索引为3的元素是55
所以删除55,就是l2=[11, 33, 44]。
要想得到我们想要的结果我们可以从最后面删除,具体代码为:
for i in range(len(l2)-1,-1,-1):
if i%2 == 1:
l2.pop(i)
print(l2) #[11, 33, 55]此时l2=[11, 33, 55]就是我们想要的结果
也可以这样做
del l2[1::2]
print(l2) #[11, 33, 55] -
字典 dict
字典 dict
update非常重要 可以增改 有则覆盖,无则添加
dic = {'name':'alex','age':18}
dic.update(height = 175)
print(dic) #{'name': 'alex', 'age': 18, 'height': 175}
dic.update(name = '太白金星')
print(dic) #{'name': '太白金星', 'age': 18, 'height': 175}
dic.update([('sex','男'),('hobby','开车')]) #面试常考
print(dic) #{'name': '太白金星', 'age': 18, 'height': 175, 'sex': '男', 'hobby': '开车'}dic1 = {'name':'alex','age':18}
dic2 = {'name':'taibai','sex':'男'}
dic1.update(dic2)
print(dic1) #{'name': 'taibai', 'age': 18, 'sex': '男'}
print(dic2) #{'name': 'taibai', 'sex': '男'}fromkeys 公用一个
dic = dict.fromkeys(('alex',1)) #两个括号表明此时括号里面的元素都是字典的键
dic1 = dict.fromkeys('alex',1) #一个括号表明第一个为键可以拆开 第二个为值并且值是一样的
print(dic) #{'alex': None, 1: None}
print(dic1) #{'a': 1, 'l': 1, 'e': 1, 'x': 1}dic2 = dict.fromkeys([1,2,3],[])
print(dic2) #{1: [], 2: [], 3: []}
dic2[1].append(666)
print(dic2) #{1: [666], 2: [666], 3: [666]}dic3 = dict.fromkeys(([1,2,3],[])) # 是两个括号就是前面的元素作为键 此时是列表不能作为字典的键
print(dic3) #TypeError: unhashable type: 'list' #列表不能作为字典的键 -
字典中的坑
循环一个字典时,如果改变这个字典的大小,就会报错
dic = {'k1':'taibai','k2':'alex','k3':'oldboy','age':18}
for i in list(dic.keys()):
print(i)
if i[0] == 'k':
dic.pop(i)
print(dic) #{'age': 18}也可以这么做
dic = {'k1':'taibai','k2':'alex','k3':'oldboy','age':18}
dic1= []
for i in dic.keys():
if 'k' in i:
dic1.append(i)
for j in dic1:
dic.pop(j)
print(dic) #