python基础 day4 列表、元组、range

一、列表初识 list

  • 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据。

  • 32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。

  • 列表是有序的,有索引值,可切片,方便取值。

1.列表的索引、切片、步长

li = [100, 'jason', False, [1, 2, 3]]
# 索引
print(li[0], type(li[0]))
print(li[1], type(li[1]))
print(li[-1], type(li[-1]))

# 切片
print(li[1:3])
print(li[:2])
print(li[1:])

# 步长
print(li[::2])
print(li[::-2])

2.列表的增删改查

      1. append 追加
    l1 = ['jason', '杨森', '真哥', '大富']
    l1.append('臭弟弟')
    print(l1)
    
      1. insert 插入
    l1 = ['jason', '杨森', '真哥', '大富']
    l1.insert(1, 'aloha')
    print(l1)
    
      1. extend 迭代追加
    l1 = ['jason', '杨森', '真哥', '大富']
    l1.extend('abcd')
    print(l1)
    l1.extend(['aloha', 'fuck'])
    print(l1)
    
      1. pop 按照索引位置删除
    l1 = ['jason', '杨森', '真哥', '大富']
    l1.pop(1)
    print(l1)
    
    print(l1.pop(-2))  # 返回值就是删除的元素
    print(l1)
    
    l1.pop()  # 默认删除列表中最后一个元素
    print(l1)
    
      1. remove 指定元素删除,如果由重名元素,默认删掉从左至右第一个
    l1 = ['jason', '杨森', '真哥', '大富']
    l1.remove('真哥')
    print(l1)
    
      1. clear 清空列表
    l1 = ['jason', '杨森', '真哥', '大富']
    l1.clear()
    print(l1)
    
      1. del 列表和字典通用的方法
    l1 = ['jason', '杨森', '真哥', '大富']
    del l1[2]  # 按照索引删除
    
    l2 = ['jason', '杨森', '真哥', '大富', 'aloha', 'carly']
    del l2[::2]  # 按照切片(步长)删除
    print(l2)
    
l1 = ['jason', '杨森', '真哥', '大富']
l1[1] = '臭屌丝'  # 按照索引修改
print(l1)

l1[::2] = ['hhh', 'aloha']  # 按照切片(步长)去改
print(l1)
l1 = ['jason', '杨森', '真哥', '大富']
for i in l1:
    print(i)

3.列表的嵌套(重点)

引入:

l1 = [1, 2, 'carly', [1, 'jason', 3]]

# 1.将l1中的'carly'变成大写并放回原处
l1[2] = l1[2].upper()
print(l1)

# 2.给小列表[1, 'jason', 3]追加一个元素,'python'
l1[-1].append('python')
print(l1)

# 3.将列表中的'jason'通过字符拼接的方式在列表中变成jasonnb
l1[-1][1] += 'nb'
print(l1)

练习:

lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
# 将列表lis中的"tt"变成大写(用两种方式)。
lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis)
# 将列表中的数字3变成字符串"100"(用两种方式)。
lis[1] = '100'
lis[3][2][1][1] = '100'
print(lis)
# 将列表中的字符串"1"变成数字101(用两种方式)。
lis[3][2][1][2] = 101
print(lis)

二、元组 tuple (了解)

只读列表,可以存大量的数据,可以索引,切片(步长)

tu = (1, 2, 'carly', [1, 'jason', 3])

元组中嵌套的列表可以任意增删改查

tu = (1, 2, 'carly', [1, 'jason', 3])

tu[-1].pop(1)
print(tu)

tu[-1].remove(1)
print(tu)

tu[-1].clear()
print(tu)

tu[-1].append(1)
tu[-1].insert(0, 'jason')
tu[-1].extend([3, 'carly'])
print(tu)

三、range

类似于列表,子定制数字范围的数字列表

r = range(10)
print(r)
for i in r:
    print(i)

for i in range(1, 10):
    print(i)

for i in range(1, 10, 2):
    print(i)
    
l1 = ['jason', '杨森', '真哥', '大富']
for i in range(len(l1)):
    print(i)

四、练习

练习一

敏感词检测
开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:敏感词列表 list1 = ["葵", "明日花绮罗", "三上悠亚", "天使萌"]则将用户输入的内容中的敏感词汇替换成等长度的(三上悠亚就替换***),并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。

list1 = ["葵", "明日花绮罗", "三上悠亚", "天使萌"]
user_talk = []
while 1:
    s1 = input('请输入评论内容:')
    for i in list1:
        if i in s1:
            s1 = s1.replace(i, len(i) * '*')
    user_talk.append(s1)
    print(user_talk)

练习二

for 循环打印嵌套列表

# 循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
list1 = [1, 2, 3, "jason", [4, 5, 6, "carly"], 7, "love"]
for i in list1:
    if type(i) == list:
        for j in i:
            print(j)
    else:
        print(i)

练习三

字符串反转

#方法一:
name = 'yangsen'
temp = []
name2 = ''
for i in name :
    temp.insert(0, i)
for j in temp:
    name2 += j
print(name2)

#方法二
print(name[::-1])

练习四

列表去重

list1 = [1, 2, 2, 3, 3, 3, 3, 3, 3, 4, 5, 5, 5, 6]
list2 = []
for i in list1:
    if i not in list2:
        list2.append(i)
print(list2)

练习五

python打印乘法口诀表

for i in range(1, 10):
    for j in range(1, i+1):
        print('{}*{}={}\t'.format(j, i, i*j), end='')  # end=''代表以''结尾,''为空代表不换行
    print()
posted @ 2020-03-22 02:26  Jason857  阅读(174)  评论(0编辑  收藏  举报