2.11 列表循环和排序
n = "银角大王"
n[::-1]
>>> n = "银角大王"
>>> n[::-1]
'王大角银'
上面切片,切成的反转,但是实际上不会对源列表造成反转.
----------------
n = ['银角大王',123]
n.reverse()
print(n)
D:\Python\python.exe D:/cc/反转.py
[123, '银角大王']
reverse反转,直接对源列表造成了反转.
---------------------
n.sort()
n = [1,2,32,15,7,5]
n.sort()
print(n)
排序
-----------------------------
n = ['123','678','$','234']
n.sort()
print(n)
如果是字符串,就会对比十进制
python3 里面. 数字和字符串 无法 在一起进行sort排序,不过python2里面可以
---------------
针对列表
names=['金角大王', '黑姑娘', 'rain', 'eva', '狗蛋', '银角大王', 'eva','鸡头']
进入以下操作
通过names.index()的方法返回第2个eva的索引值
把以上的列表通过切片的形式实现反转
打印列表中所有下标为奇数的值
通过names.index()方法找到第2个eva值 ,并将其改成EVA
-------------------
根据以下数据结构:
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
实现功能要求:
1、启动程序后,让用户输入工资,然后进入循环,打印商品列表和编号
2、允许用户根据商品编号选择商品
3、用户选择商品后,检测余额是否够,够就直接扣款,并加入购物车, 不够就提醒余额不足
4、可随时退出,退出时,打印已购买商品和余额
------------------------------
2.12 元组
不可变 = 只读列表
只有 count 和 index 用法
如果元组里面包含可变数据类型, 比如 "列表" , 那么 这个列表可以改变.
>>> data
(99, 88, 77, ['Alex', 'Jack'], 33)
>>> data[3][0] = '金角大王'
>>> data
(99, 88, 77, ['金角大王', 'Jack'], 33)
2.14 数据类型--字符串
字符串是有序的字符的集合, '' 或者 "" 包含的 属于字符串
-----------------------
capitalize 首字母大写
a = "hahx"
a.capitalize()
'Hahx'
---------------------
casefold 把字符串全变小写
a ="HAHX"
a.casefold()
'hahx'
-----------------------
center 补齐
a.center(10,'-') 补齐10个,用- 补齐10个
'---HAHX---'
a = "welecome to 广东"
a.count('e') 默认查找所有e 共有3个
3
a.count('e',2,-1) 指定从第二个开始到结束,查找有几个字符串 e,只有2个
2
-------------------------------
startswith() 判断是否xx开头
-------------------------------
endswith
a.endswith('广东') 判断是否广东结尾
True
-----------------------------------------------
find
a = "welecome to 广东"
a.find('e')
1 # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:
a.find('e',7)
7 # 从下标7开始,查找在字符串里第一个出现的子串:返回结果 7
a.find('s')
-1 # 找不到返回-1
有点类似 index
---------------------------
format()
s = "Welcome {0} to Apeland,you are No.{1} user.,再次恭喜:{0}"
s.format('大傻瓜',5)
'Welcome 大傻瓜 to Apeland,you are No.5 user.,再次恭喜: 大傻瓜'
里面出现2个{0}, 只要按照默认顺序排列好,就没问题
------------------------------
s = "Welcome {0} to Apeland,you are No.{1} user"
s.format('大傻瓜',5) 需要按照默认顺序来,.
'Welcome 大傻瓜 to Apeland,you are No.5 user.'
--------------------------------------
s = "Welcome {name} to Apeland,you are No.{count} user."
s.format(count= 4,name='大傻瓜') 可以不用指定顺序, 只要定义好就可以
'Welcome 大傻瓜 to Apeland,you are No.4 user.'
---------------------------
isdigit() 判断是否是数字
a = "3" # 不能直接写3 ,否则会报错. AttributeError: 'int' object has no attribute 'isdigit'
if not a.isdigit():
print('no')
else:
print('yes')
yes
---------------------------------
islower() 是否由小写字母组成
--------------------------------
isupper() 是否都为大写组成
-----------------------------
isspace() 是否只由空格组成
-------------------
join() 把列表的字符串拼接起来 可以指定拼接的 格式
>>> n = ['alex','jack','rain']
>>> '|'.join(n)
'alex|jack|rain'
-----------------------------
ljust() 补齐剩下的,从字符串最后一个地方开始补齐指定的格式,如'-'
a ="haha"
a.ljust(10,'-')
'haha------'
------------------------------
rjust() 补齐剩下的,从字符串最开始地方开始补齐指定的格式,如'*'
a.rjust(10,'*')
'******haha'
-----------------------------
lower()
方法转换字符串中所有大写字符为小写, 其效果和 casefold() 方法非常相似。
两者的区别是:lower() 方法只对ASCII编码,也就是‘A-Z’有效,
对于其他语言(非汉语或英文)中把大写转换为小写的情况只能用 casefold() 方法。
------------------------------
strip() 将一个字符串分隔成多个字符串组成的列表
把字符串2边的 \n \t 空格去掉
a = "\t 简单 \n "
a
'\t 简单 \n '
a.split()
['简单'] #split之后,组成了列表
a ='alex,haha.jbm, mm|qq'
a.split(",")
['alex', 'haha.jbm', ' mm|qq']
a.split(" ")
['alex,haha.jbm,', 'mm|qq']
a.split("|")
['alex,haha.jbm, mm', 'qq']
lstrip() split左边的
rstrip() split右边的
-----------------------------
replace() 替换, 如果有多个同样的, 那么会把所有的都改掉
a = "我有一只狗叫jack,jack喜欢吃猪肉,你喜欢jack吗"
a.replace("jack","tom")
'我有一只狗叫tom,tom喜欢吃猪肉,你喜欢tom吗'
a.replace("jack","tom",2) 加上参数2,那么只改2次
'我有一只狗叫tom,tom喜欢吃猪肉,你喜欢jack吗'
---------------------------
swapcase() 对字符串的大小写字母进行转换。
a ='alEXx,haHasS.JMK, Mm|qQ'
a.swapcase()
'ALexX,HAhASs.jmk, mM|Qq'