python基础数据类型二

时间:2022-10-19 18:14:13

一、list

  1、list基本知识

 

li = ['alex',123,True,(1,23,34,'wusir'),[2412,234,'xiaomin'],{'name':'alex'}]
#索引、切片、步长
print(li[0]) #alex
print(li[2]) #True
print(li[:4]) #['alex', 123, True, (1, 23, 34, 'wusir')]
print(li[3:1:-1]) #[(1, 23, 34, 'wusir'), True]
li = [1,'a','b','a',2,3,'老男孩']
#
#append 在列表最后加入元素,结果没有返回值,直接修改列表
li.append('alex')
print(li) #[1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex']
li.append([1,2,3])
print(li) #[1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]]
#insert 插入 可以按索引插入
li.insert(2,'sb')
print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]]
#extend 迭代添加,到最后
li.extend('214')
print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4']
li.extend([1,2,'ab'])
print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab']
#
#remove 按元素删除
li.remove('a')
print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab']
#pop 按索引删除,默认删除最后一个,返回值是删除的元素
print(li.pop()) #ab
print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2]
print(li.pop(2)) #b
print(li) #[1, 'sb', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2]
#clear 清空列表内容
li.clear()
print(li) #[]
#del 删除列表或者切片删除
li = [1,2,4,6]
# del li
print(li) #列表不存在了
li = [1,'a','b','a',2,3,'老男孩']
#切片删除,可以按步长删除
del li[3:] #[1, 'a', 'b']
li = [1,'a','b','a',2,3,'老男孩']
del li[:-3:2]
print(li) #['a', 'a', 2, 3, '老男孩']
#改 按照索引改
li = [1,'a','b','a',2,3,'老男孩']
li[0] = 'abc'
print(li) #['abc', 'a', 'b', 'a', 2, 3, '老男孩']
li[0] = ['abc',123,'eta']
print(li) #[['abc', 123, 'eta'], 'a', 'b', 'a', 2, 3, '老男孩']
#按照切片去改
li[:3] = 'sb'
print(li) #['s', 'b', 'a', 2, 3, '老男孩']
li[:2] = ['sb']
print(li) #['sb', 'a', 2, 3, '老男孩']
#
#查看,切片步长查看
print(li[0]) #sb
print(li[:2]) #['sb', 'a']
print(li[::2]) #['sb', 2, '老男孩']
# for 循环
for i in li:
    print(i)
#sb
#a
#2
#3

#其他操作方法
#sort从小到大,正向排序
li = [23,21,43,1,54]
li.sort()
print(li) #[1, 21, 23, 43, 54]
#从大到小,反向排序
li.sort(reverse =True)
print(li) #[54, 43, 23, 21, 1]
#翻转
li.reverse() #[1, 21, 23, 43, 54]
#长度 len
print(len(li)) #5
print(li) #[1, 21, 23, 43, 54]
#count
li = ['t',2342,'t','safs','sadfast','eawt']
print(li.count('t')) #2
#index 通过元素找索引
print(li.index('t')) #0
#str
#join用字符串做一个连接符
#连接可迭代对象中的每一个元素,形成一个新的字符串
s = 'xxoo'.join('sb')
print(s) #sxxoob

#split str ---> list
# s1 = 'wusie taibai'
#print(s1.split())
#join list --> str
l1 = ['wusir','taibai']
print(' '.join(l1)) #wusir taibai
print(''.join(l1)) #wusirtaibai

  2、list嵌套

li = [1,2,'alex',['100','wusir',99,[]],22]
# 1,将alex 变成首字母大写的Alex
# capitalize()
# li[2] = 'Alex'
# print(li)
# print(li[2].capitalize())
li[2] = li[2].capitalize()
print(li)
# 2,将wusir变成全部大写的wusir 放到原处
# print(li[3])
# l2 = li[3]
# print(l2[1].upper())
# li[3][1] = l2[1].upper()
# print(li)
li[3][1] = li[3][1].upper()
print(li)
# 3,将99加1变成100,放回原处
li[3][2] = li[3][2] + 1
print(li)

二、元组(tuple)

a = (1,2,'alex','oldboy')
print(a[:2]) #(1, 2)
print(a[2]) #alex
for i in a:
    print(i)
# 1
# 2
# alex
# oldboy
#儿子不能改,孙子可能改
b = (1,2,'alex',[1,'taibai'],(1,2,3),'oldboy')
b[3].append('2342')
print(b) #(1, 2, 'alex', [1, 'taibai', '2342'], (1, 2, 3), 'oldboy')
print(len(b)) #6
print(b.count(1)) #1
print(b.index('oldboy')) #5

三、range

  range相当于一个计数器

for i in range(100): # [0,1,2,。。。99]
    print(i)
for i in range(0,10,2):  # [0,2,4,6,8]
    print(i)
for i in range(10,0,-1):  # [10,9,8....1]
    print(i)

四、思考

1,计算用户输入的内容中有几个整数(连续数字算一个)。

counte = 0
number = 0
content = input('请输入内容:')
if content[0].isdigit() and content[-1].isdigit():
    counte += 1
for i in content:
    if i.isdigit():
        for a in content[number:]:
            if content[number-1].isalpha():
                counte += 1
                break
            else:break
    number += 1
print(counte)
content = input('请输入内容:').strip()
ls = []
for i in content:
    if i.isalpha():
        content = content.replace(i, ' ', 1)
content = content.strip().split(' ')
for k in content:
    if k.isdigit():
        ls.append(k)
print(len(ls))

2、实现一个整数加法计算器(不定个数相加):

如:content = input(‘请输入内容:’)  # 如用户输入:5+9+10或5+ 9或5 + 9+5+3,然后进行分割再进行计算。

content = input('请输入内容:')
number = content.split('+')
sum = 0
for i in number:
    sum += int(i)
print(sum)

3、分别输出li = [1,2,3,['alex','wusir','老男孩'],4]里面的每个元素(包括2级列表)

li = [1,2,3,['alex','wusir','老男孩'],4]
for i in li:
    a = i
    if type(i) == list:
        for t in a:
           print(t)
        continue
    print(i)

五、练习题

1,写代码,有如下列表,按照要求实现每一个功能

li = [‘alex’,’wusir’,’eric’,’rain’,‘alex’]

1)计算列表的长度并输出

2)列表中追加元素’seven’,并输出添加后的列表

3)请在列表的第1个位置插入元素’Tony’,并输出添加后的列表

4)请修改列表第2个位置的元素为’Kelly’,并输出修改后的列表

5)请将列表l2=[1,’a’,3,4,’heart’]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

6)请将字符串s = ‘qwert’的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

7)请删除列表中的元素’eric’,并输出添加后的列表

8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表

9)请删除列表中的第2至4个元素,并输出删除元素后的列表

10)请将列表所有得元素反转,并输出反转后的列表

11)请计算出‘alex’元素在列表li中出现的次数,并输出该次数。

 

#1
li = ['alex','wusir','eric','rain','alex']
print(len(li))
#2
li.append('seven')
print(li)
#3
li.insert(0,'Tony')
print(li)
#4
li[1] = 'Kelly'
print(li)
#5
li.extend([1,'a',3,4,'heart'])
print(li)
#6
li.extend('qwert')
print(li)
#7
li.remove('eric')
print(li)
#8
print(li.pop(1))
print(li)
#9
del li[1:4]
print(li)
#10
li.reverse()
print(li)
#11
print(li.count('alex'))

2,写代码,有如下列表,利用切片实现每一个功能

li = [1,3,2,’a’,4,’b’,5,’c’]

1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]

2)通过对li列表的切片形成新的列表l2,l2 = [’a’,4,’b’]

3)通过对li列表的切片形成新的列表l3,l3 = [’1,2,4,5]

4)通过对li列表的切片形成新的列表l4,l4 = [3,’a’,’b’]

5)通过对li列表的切片形成新的列表l5,l5 = [‘c’]

6)通过对li列表的切片形成新的列表l6,l6 = [‘b’,’a’,3]

#1
li = [1,3,2,'a',4,'b',5,'c']
l1 = li[:3]
print(l1)
#2
l2 = li[3:6]
print(l2)
#3
l3 = li[::2]
print(l3)
#4
l4 = li[1:-1:2]
print(l4)
#5
l5 = li[-1:]
print(l5)
#6
l6 = li[-3::-2]
print(l6)

3,写代码,有如下列表,按照要求实现每一个功能。

lis = [2,3,‘k’,[‘qwe’,20,[‘k1’,[‘tt’,3,’1’]],89],’ab’,’adv’]

1)将列表lis中的’tt’变成大写(用两种方式)。

2)将列表中的数字3变成字符串’100’(用两种方式)。

3)将列表中的字符串’1’变成数字101(用两种方式)。

 

#1
#第一种
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][0] = 'TT'
print(lis)
#第二种
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis)
#2
#第一种
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[1] = '100'
lis[3][2][1][1] = '100'
print(lis)
#第二种
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[1] = str(lis[1]+97)
lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
print(lis)
#3
#第一种
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][2] = int('10' + lis[3][2][1][2])
print(lis)
#第二种
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][2] = 101
print(lis)

 

4,请用代码实现:

       li = [‘alex’,’eric’,’rain’]

利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"

 

li = ['alex','eric','rain']
str_list = "_".join(li)
print(str_list)

5,查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。

li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’  aqc’]

li = ['taibai ','alexC','AbC ','egon', ' Ritian',' Wusir','  aqc']
l1 = []
count = 0
for i in li:
    if i.strip().startswith('a') and i.strip().endswith('c'):
        l1.append(li[count].strip())
    elif i.strip().startswith('A') and i.strip().endswith('c'):
        l1.append(li[count].strip())
    count += 1
print(l1)

6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:

敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]

则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。

li = ["苍老师","东京热","武藤兰","波多野结衣"]
l1=[]
content = input("请您输入相关内容:")
for i in li:
    if i in content:
        content = content.replace(i,"***")
l1.append(content)
print(l1)
print(content)

7,有如下列表li = [1,3,4’,alex’,[3,7,8,’taibai’],5,’ritian’]

循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。

我想要的结果是(用两种方法实现,其中一种用range做):

1

3

4

‘alex’

3

7,

8

‘taibai’

5

ritian

#第一种
li = [1,3,4 ,'alex',[3,7,8,'taibai'],5,'ritian']
for i in li:
    if type(i) == list:
        for h in i:
            print(h)
    else:print(i)
# 第二种
li = [1,3,4 ,'alex',[3,7,8,'taibai'],5,'ritian']
for i in range(len(li)):
    if type(li[i]) == list:
        for h in range(len(li[i])):
            print(li[i][h])
    else:print(li[i])