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'