python 列表/元祖/字典基础点汇总

1. list

    列表非常适合用于存储在程序运行期间可能变化的数据集

1.1  list 新增元素

names = ["zhang","cheng","li"]
#在列表末尾添加元素
names.append('liu')
#在列表中插入元素,指定索引和值
names.insert(2,"chen")

1.2 list 修改元素

names = ["zhang","cheng","li"]
#重新赋值
names[-1] = "yong"
print(names)

1.3 list 删除元素

names = ["zhang","cheng","li","liu"]
# 删除指定位置的元素,del
del names[1]
#pop()删除元素,默认删除尾部
names.pop()
#pop()可删除指定位置的元素
names.pop(0)
#根据值删除元素,remove()
names.remove('liu')

⚠️方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要 使用循环来判断是否删除了所有这样的值

⚠️pop()函数返回值是删除的那个元素(可加以利用),remove()返回值 None

1.4 list 排序

names = ["zhang","cheng","li","liu"]
#正序排列
names.sort()
#逆序排列
names.sort(reverse=True)
#逆序排列
names.reverse()
#临时排序
sorted(names)
#还是原来的顺序
print(names)
#列表长度
print(len(names))

 ⚠️len()sorted() 都是列表作为函数的参数,而其他的函数是作为list的一个内置函数

 1.5 数值列表

#生成列表
numls = list(range(1,10))
print(numls)
#等差数列,差值2
for i in range(1,10,2):
    print(i*i)
#列表中最小的
print(min(numls))
#列表中最大的
print(max(numls))
#列表数值之和
print(sum(numls))

 1.6 列表解析

#列表解析
#要求:列出1~10的数字
ls = [i for i in range(1,10) ]
print(ls)

#要求:列出1~10所有偶数数字的平方
ls = [i*i for i in range(1,10) if i%2==0]
print(ls)

#要求:列出"/var/log"中所有已'.log'结尾的文件
import os
file = [ file for file in os.listdir(os.getcwd()) if file.endswith('.py') ]
print(file)

#要求:实现两个列表中的元素逐一配对。
print([(i,j) for i in ['x','y','z'] for j in ['a','b','c'] ])

#要求:使用列表解析生成 9*9 乘法表
print('\n'.join([''.join(['%s*%s=%-2s '%(y,x,x*y)for y in range(1,x+1)])for x in range(1,10)]))

 ⚠️上述的语句中乘法表已经不利于阅读了,所以不建议,可以采取下述方案

for i in range(1,10):
    for j in range(1,i+1):
        print(str(i) + '*' + str(j) +'=' + str(i*j) ,end='\t')
    print()

 1.7 列表切片

#切片
names = ["zhang","cheng","li","liu"]
print(names[0:2])
print(names[1:3])
#不指定第一个索引,则从头开始取
print(names[:2])
#不指定最后一个索引,则止于列表末尾
print(names[1:])
#从倒数第几个取到末尾
print(names[-2:])

运行结果:

 

⚠️复制一个列表时,如果要生成副本的样式,则需要用到切片,否则只是重定向了,还是同一份内容

names = ["zhang","cheng","li","liu"]
other_names = names[:]
names.append("chen")
print(other_names)

names = ["zhang","cheng","li","liu"]
other_names = names
names.append("chen")
print(other_names)

输出结果分别为:

2. 元祖

    不可变的列表被称为元组,用()

 2.1 元祖的赋值

du = ('fan','peng','li')
print(du[0])
#不支持给元祖元素更新值,但是可以给元祖变量赋值
du = ('chen','cong')
print(du)

运行结果:

3. dict

3.1  增删改查字典

#创建一个空字典
zhuzi = {}
zhuzi['name'] = 'zhuzi'
zhuzi['age'] = 18
zhuzi['job'] = "UI"
zhuzi['home'] = '海南'
print(zhuzi)
#修改字典的值
zhuzi['age'] = 20
for k ,v in zhuzi.items():
    print(k.title() +':\t' + str(v))

#删除一个键值对
del zhuzi['name']
print(zhuzi)

3.2 遍历字典

zhuzi = {'name': 'zhuzi', 'age': 18, 'job': 'UI', 'home': '海南'}
#遍历元素
for k ,v in zhuzi.items():
    print(k.title() +':\t' + str(v))
#遍历键值
for k in zhuzi.keys():
    print(k+'-'+str(zhuzi[k]))

#按顺序遍历字典中的所有键
print('按顺序遍历字典中的所有键')
for k in sorted(zhuzi.keys()):
    print(k+'-'+str(zhuzi[k]))

4. 用户输入和while

###用户输入
while True:
    get_input = input('请输入你想输入的内容(输入exit()退出):')
    print("你输入的是:"+get_input)
    if get_input == 'exit()':
        break

# 使用int获取数字
data = int(input("请输入数值:"))
print(data)

#判断输入是否10 的倍数
if data % 10 == 0:
    print(str(data) + "是10的倍数")
else:
    print(str(data) + "不是10的倍数")

 

posted @ 2020-05-22 14:49  pretend_smile  阅读(245)  评论(0)    收藏  举报