for循环,列表,元组

依旧是python基础

for循环

s = 'woeudbwieb'
for i in s:#s代表可迭代对象
    print(i)
if 'c' not in s:
    print('没有c')

列表

每个元素以逗号隔开,可以放任意的数据类型,有序
切片和索引跟字符串相同

常用操作

# 增加
li = ['jiang','chengcheng']
li.append('judy')
print(li)

# 迭代增加
li = ['jiang','cheng']
li.extend('123')#参数为可迭代对象,分解成元素逐个添加到列表后面
# 小练习,循环增加列表
li = ['jiang','chengcheng']
while 1:
    new = input('input new :')
    if new=='q':
        break
    else:li.append(new)
print(li)
# 插入
li = ['jiang','chengcheng']
li.insert(1,'12')#插入到索引值的前面
print(li)
# 删除
li = ['jiang','chengcheng',1,2,3,4]
li.pop() #按索引删除,默认删除最后一个,返回删除元素
li.remove('dudu') #按元素删除,没有返回值
li.clear() #清空列表
del li #在内存中删除整个列表
del li[2:]#切片删除
# 修改
li = ['jiang','chengcheng',1,2,3,4]
li[2] = 'hlb'

# 切片修改
li[2:4] = 'i am beatiful girl'#任意多个字符
print(li)
# 排序(列表中元素是同一类型)
list = [1,2,3,4,7,6,5,8,0,9]
list.sort(reverse=True)#默认false->正向排序
list.reverse()#反转
# 列表嵌套
list = [['jiang','cheng','cheng'],'is','a','beautiful','girl']
#循环打印嵌套列表
l = [1,2,3,5,'jcc',[1,5,3],'beauty']
for i in l:
    if isinstance(i,list):
        for j in i:
            print(j)
    else:print(i)

list在循环中删除的状况

#测试循环中删除元素
list1 = [1,2,3,4,5]
for i in range(len(list1)):#进入循环时range(len(list1))的数值已经固定,[0,1,2,3,4]
    print(i)
    del list1[i]#i = 3时报错,IndexError: list assignment index out of range
    print(list1)
    
for i in range(len(list1)):
    if i%2!=0:
        list1.remove(list1[i])
print(list1)#虽然没有报错,但是结果是错误的
#删除奇数位的元素
#1.list的切片
print(list1[::2])
# 2.
list2 = []
for i in range(len(list1)):
    if i%2==0:
        list2.append(list1[i])
list1 = list2
print(list2)
print(list1)

元组

可循环,可切片,不可修改

可变数据类型:列表list,字典dict,集合set 不可hash
不可变数据类型:元组tuple,bool,int,str 可hash

常用操作

tuple = (1,2,3,'jiang','cheng','cheng',['is','a','beautiful','girl'])
tuple[0] = '1'#报错,不可修改
tuple[6][2] = 'handsome'#可以修改

join

s = 'jcc'
lis = ['1','2','3']#list里边只能放字符串,不能放数字,且不能嵌套
s1 = '*'.join(lis)#可以放可迭代对象,以*连接元素,形成一个新的字符串

range

for i in range(0,10,2):#打印
    print(i)
for i in range(10,1,-1):#倒叙打印2-10
    print(i)
for i in range(1,10,-1):#不会报错,什么都不打印
    print(i)

字典

key必须是不可变数据类型
优势:key值组成hash表,二分方法查找,查询速度快
存储大量的关系型数据
无序

常用操作

#字典 dict
dic = {'age':19,'name':'jcc'}
dic1 = {'age':22}
#增加
dic['high'] = 160
dic.setdefault('weight',49)
#修改
dic['name'] = 'jiangcc'
dic.update(dic1)#把dic1中的键值对更新到dic中,有就改,没有就不改
dic.setdefault('weight',50)#不做改变,体重增加一公斤都不行
#删除
dic.pop('age')#删除有返回值,返回删除的元素
dic.popitem()#随机删除
dic.clear()#清空字典
del dic['name']#删除键值对,没找不到会报错
#
dic.keys()#得到一个和列表相似的数据类型,把字典中的键放入
dic.values()#得到一个和列表相似的数据类型,把字典中的值放入
dic.items()#得到一个列表里边 嵌套多个元组
View Code
# 循环键值对
for k,v in dic.items():
    print(k,v)
print(dic.get('name1'))#如果没有查到不报错,返回None
v = dic['name1']#查不到报错
# 字典嵌套
dic = {
    'name':['jcc','hlb'],
    'hobby':{
        'boy':'cool'
    },
    'age':18
}
dic['age'] = 16
dic['name'].append('jiangchengcheng')
dic['name'][0] = 'JCC'
print(dic)
View Code

一些小知识

# 用一行代码交换ab的值
a,b = 1,2
print(a,b)
a,b = b,a
print(a,b)
#当数字在-5-256之间 创建多个数字的地址相同,因为有小数据池
i1 = 6
i2 = 6
#内存地址相同
i3 = 300
i4= 300
#内存地址不相同

=,== is

= ->赋值
== ->比较值是否相等
is ->比较内存地址是否相等
id()-->查看内存地址

17:42

原文地址:https://www.cnblogs.com/jiangchengcheng/p/9531177.html