元组,是只读列表,不能增删改查,也是一个容器,可以存入任何数据类型
存储的是什么数据类型,取出来的时候,也就是什么数据类型
而字符串就不是容器,在字符串只是一个一个的字符
但注意:只是说,不能对儿子更改,对孙子可以改
'''
tuple1 = (123,'alex',('xx','yy'),['ab','cd',12],{'name':'jingxin','job':'teahcer'})
print(tuple1)
# 对于 tuple 而言,它的儿子不能改,但孙子能改,例如:['ab','cd',12]是tuple儿子,整个不能改,但可以改列表中的元素
tuple1[3][0]= 'AB'
print(tuple1)
print(tuple1[3][0])
输出结果:
(123, 'alex', ('xx', 'yy'), ['ab', 'cd', 12], {'name': 'jingxin', 'job': 'teahcer'})
(123, 'alex', ('xx', 'yy'), ['AB', 'cd', 12], {'name': 'jingxin', 'job': 'teahcer'})
AB
li = ["alex","WuSir","ritian","barry","wenzhou"]
li.extend([1,"a",3,4,"heart"]) # extend() 迭代着增加
li.append([1,"a",3,4,"heart"]) # 将列表整体追加到最后
列表,是容器,可以存储大量的数据,并且可以任意数据类型,可进行增删改查
容器,可以存储任意数据类型,存进去是什么数据类型,取出来也是什么类型,
这是与其它数据类的区别
比如:字符串类型,存储进去的,取出来都是一个个字符
'''
# test_list = [133,'snake',True,['a','b','c'],(23,35,'joke'),{'date':'1988/6/7','hook':'jeason'}]
# print(test_list)
# print( test_list[0],type(test_list[0]) ) # 输出结果:133 <class 'int'>
# print(test_list[1],type(test_list[1])) # 输出结果: snake <class 'str'>
# print(test_list[-1],type(test_list[-1])) # 输出结果:{'date': '1988/6/7', 'hook': 'jeason'} <class 'dict'>
# print(['a','b','c'],type(['a','b','c'])) # 输出结果:['a', 'b', 'c'] <class 'list'>
#
# test_str = "['a','b','hover']" # 从形式上看好像是把一个列表存储到字符串中
# print(test_str)
# print(test_str[0],type(test_str[0])) # 实际上都是一个个字符,取出来都是字符串类型
# s = ['alex','taibai','nv','日天']
# s[:2] = 'sbcbf'
# print(s)
#
# l2 = [1,3, 8, 5, 7, 2,9]
# # l2.sort() # 从小到大排序,即升序
# # print(l2) #
# # l2.sort(reverse=True) # 从大到小排序,即降序
# # print(l2)
# l2.reverse()
# print(l2) # 将列表反转
# l1 = ['alex','wusir','taibai','egon','景女神']
# print(l1)
# # 对列表的只剩,增删改查
# # 增
# # append() 追加到列表的最后
# l1.append('小温老师')
# print(l1)
# l1.insert(2,'chris') # 通过索引,在指定位置插入元素
# print(l1)
# # extend 迭代着追加 ,将可迭代对象的组成单元追加到最后
# l1.extend('Hjk')
# print(l1)
# l1.extend(['abb','joke'])
# print(l1)
# 删除
# l2 = ['alex','chris','john','carrot','大学城']
# ret = l2.pop(0) # pop() 按照索引去删除,列表的唯一有返回值的函数
# print(ret) # 返回值
# print(l2)
#
# l2.remove('chris') # remove 按照元素去删除
# print(l2)
#
# l2.clear() # 清空列表的元素
# print(l2) # 输出结果: []
#
# # del 删除, 是一个关键字
# l2 = ['alex','chris','john','carrot','大学城']
# del l2[0] # 按照索引删除元素
# print(l2)
#
# l2 = ['alex','chris','john','carrot','大学城']
# del l2[1:4] # 按照切片删除元素
# print(l2)
#
# l2 = ['alex','chris','john','carrot','大学城']
# del l2[0::2] # 按照切片 + 步长删除元素
# print(l2)
#
# l2 = ['alex','chris','john','carrot','大学城']
# del l2 # 删除整个列表,在内存级别的删除
# print(l2) # 输出结果: NameError: name 'l2' is not defined
# 改
# l2 = ['alex','chris','john','carrot','大学城']
# l2[1] = '男神' # 按照索引去更改
# l2[-2] = '日天'
# print(l2)
# 按照切片去更改
# l2 = ['alex','chris','john','carrot','大学城']
# l2[:3] = 'sbNB' # 输出结果:['s', 'b', 'N', 'B', 'carrot', '大学城']
'''
背后的工作原理:
首先,将切片对应的范围的原元素删除掉,然后将赋值符号右边的
可迭代对象的元素,迭代着增加到列表;可迭代对象的元素个数没有限制。
'''
# print(l2)
# l2 = ['alex','chris','john','carrot','大学城']
# l2[3:5] = ['taibai','oldBoy','Eva_j'] # 输出结果:['alex', 'chris', 'john', 'taibai', 'oldBoy', 'Eva_j']
# print(l2)
# 按照切片 + 步长去更改
# l3 = ['alex', 'chris', 'john', 'taibai', 'oldBoy', 'Eva_j']
# l3[1:6:2] = 'GOD' # 输出结果:['alex', 'G', 'john', 'O', 'oldBoy', 'D']
# l3[1:6:2] = ['jinxin','孙悟空','司徒大人','党参'] # ValueError: attempt to assign sequence of size 4 to extended slice of size 3
'''
注意事项:
按照切片 + 步长 的方式去更改,当步长大于1时,即大于等于2时,用于赋值的可迭代对象的元素个数,与切片个数匹配,即一一对应
'''
# print(l3)
### 查 #
# 可按索引,切片,切片 + 步长 去查
# 可以用for 循环去查
#### 其它方法 #####
# l3 = ['alex', 'chris', 'john', 'taibai', 'oldBoy', 'Eva_j']
# print(len(l3)) # len() 公共方法,求对象的长度或叫大小
# print(l3.count('chris')) # count() 统计元素出现的次数
# print( l3.index('taibai') ) # index()方法,查找指定元素第一次出现在列表的索引
# l3 = ['alex', 'chris', 'john', 'taibai', 'oldBoy', 'Eva_j','taibai']
# print( l3.index( 'taibai' )) # 输出结果:同样是3
# l5 = [5,7,2,8,3,9,1] # 这样写也可以,但不清晰,一目了然
# l5 = [5, 7, 2, 8, 3, 9, 1]
# l5.sort() # 默认 从小到大 进行排序
# print(l5)
# l6 = [5, 7, 2, 8, 3, 9, 1]
# l6.sort(reverse=True) # 将参数reverse设置为布尔值True,则 从大到小 排序
# print(l6)
# l7 = [5, 7, 2, 8, 3, 9, 1]
# l7.reverse() # 将列表反转
# print(l7) # 输出结果:[1, 9, 3, 8, 2, 7, 5]
### 元组 tuple ####
'''
元组,是只读列表,不能增删改查,也是一个容器,可以存入任何数据类型
存储的是什么数据类型,取出来的时候,也就是什么数据类型
而字符串就不是容器,在字符串只是一个一个的字符
但注意:只是说,不能对儿子更改,对孙子可以改
'''
tuple1 = (123,'alex',('xx','yy'),['ab','cd',12],{'name':'jingxin','job':'teahcer'})
# print(tuple1)
# # 对于 tuple 而言,它的儿子不能改,但孙子能改,例如:['ab','cd',12]是tuple儿子,整个不能改,但可以改列表中的元素
# tuple1[3][0]= 'AB'
# print(tuple1)
# print(tuple1[3][0])
# range 用来产一个自定制的 数字范围的,可迭代对旬, 类似于列表
# print(range(10),type(range(10))) # 输出结果:range(0, 10) <class 'range'>
# for i in range(10): # 默认从0开始,顾头不顾尾
# print(i)
# print("华丽的分隔线".center(100,'*'))
# for i in range( 5,10): # 指定开始值 ,和终值
# print(i)
# print("华丽的分隔线".center(100,'#'))
# for i in range(1,10,2): # 指定开始值,终值,步长
# print(i)
# 1, 找到alex的e元素。
# 2, 将wusir变成大写。
# 3, 给此列表['taibai',99,'ritian'] 追加一个元素,'文周'
# 4,将 'taibai' 首字母大写
# 5,将 99 通过数字加1 的方式变成100,并放回原处。
# l3 = ['alex', 'wusir', ['taibai',99,'ritian'], 20]
#
# #1,找到alex的e元素
# alex_index = l3.index('alex')
# print( l3[alex_index].find('e') )
# # 2,
# wusir_index = l3.index('wusir')
# l3[wusir_index] = l3[wusir_index].upper()
# print(l3)
# #3.
# subList_index = l3.index(['taibai',99,'ritian'])
# l3[subList_index].append("文周")
# print(l3)
# #4
# taibai_index = l3[subList_index].index('taibai')
# l3[subList_index][taibai_index] = l3[subList_index][taibai_index].capitalize()
# print(l3)
# #5
# index_99 = l3[subList_index].index(99)
# l3[subList_index][index_99] = l3[subList_index][index_99] + 1
# print(l3)
#
# # tuple
# range(1,10)
# print(range(1,10))
# l4 = ['alex', 'wusir', ['taibai',99,'ritian'], 20]
#
# for i in range(0,len(l4)):
# print(i,l4[i])
#
# print( 'alex' in l4 )
# l4[0:2:1] = 'sbcfd'
# print(l4)
#l4[:2:2] = 'abcef' # ValueError: attempt to assign sequence of size 5 to extended slice of size 1
# slogan = 'abcdef'# 输出asb,bsb,csb,...fsb
# is_first = True # 设置第一次进入循环标志位
# msg = ''
# for item in slogan:
# if is_first:
# msg += item
# is_first = False
# else:
# msg += 'sb
' + item
# print(msg + "sb")
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
我想要的结果是:
1
3
4
"alex"
3
7,
8
"taibai"
5
ritian
'''
# li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
# for child in li:
# if isinstance(child,list):
# for i in child:
# print(str(i).lower())
# else:
# print(str(child).lower())
####### 方法二 #########################################
# li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
# for child in li:
# if type(child) == list:
# for grandChild in child:
# print(str(grandChild).lower())
# else:
# print(str(child).lower())