python编程 基础入门学习笔记二

本节内容:

1.字符串

2.列表

3.元组

4.字典

5.练习

 

1.字符串                                                                                                                                                                    

字符串的方法:

>>> name="my name is Rose and I am 20 years old"
>>> print(name.capitalize())
My name is rose and i am 20 years old

name.capitalize() 首字母大写

>>> print(name.count("a"))
4

name.count("a") 计算字符串中包含字母a的个数

>>> print(name.center(50,"-"))
------my name is Rose and I am 20 years old-------
>>> print(name.center(20,"-"))
my name is Rose and I am 20 years old

name.center(50,"-") name内存中的字符串长度(37),剩余13个字符用填充"-",将name内存中的字符串放在中间,两边均匀填满"-"

name.center(37,"-") name内存中的字符串长度(37),所以只存储name内存中的字符串

请自己比较print(name.ljust(50,'*'))和print(name.rjust(50,'*'))

>>> print(name.endswith("ex"))
False

name.endswith("ex") 判断字符串是否以"ex"结尾,是返回True,否则返回False

>>> name="my \tname is Rose and I am 20 years old"
>>> print(name.expandtabs(tabsize=30))
my                            name is Rose and I am 20 years old

name.expandtabs(tabsize=30) 在有tab键的地方用30个tab键替换,如果tabsize未赋值,则默认为8个tab

>>> print(name.find("Rose"))#字符串和列表一样可以切片
12

name.find("name")找到"Rose"字符串在name中的位置,返回的值12是"Rose"的起始位置

>>> name="my \tname is {name} and I am {year} old"
>>> print(name.format(name='Jack',year=23))
my     name is Jack and I am 23 old

name.format(name='Jack',year=23) 为{}里的字符串赋值

>>> print(name.format_map({'name':'Jone','year':12}))
my     name is Jone and I am 12 old

name.format_map({'name':'Jone','year':12}) 以字典映射的方式{}里的字符串赋值

>>> print(name.isalnum())
False
>>> print('abc123'.isalnum())
True

name.isalnum()、'abc123'.isalnum() 字符串中是否包含数字,包含则返回True,不包含则返回False

>>> print('aA'.isalpha())
True
>>> print('aA1'.isalpha())
False

判断字符串是否为全为字母,是则返回True,否则返回False

>>> print('a 1A'.isidentifier())#判断是不是一个合法的标识符
False

判断给出的字符串是否是合适的标识符,合法返回True,不合法则返回False

>>> print('aa'.islower()) 
True
>>> print('aA'.isupper())
False

判断大小写,比较容易理解,不赘述了,请自己练习print('aa'.upper())、print('aA'.lower)

>>> print('33.33'.isnumeric())
False
>>> print('33'.isnumeric())
True
>>> print('33a'.isnumeric())
False

判断是不是整数数字,是返回True,否则返回False

>>> print(' '.isspace())
True

判断空格键,是返回True,否则返回False

>>> print('My Name Is '.istitle())
True
>>> print('My Name is '.istitle())
False

判断是否为标题,主要是看那个单词的首字母是否大写

>>> print('+'.join(['1','2','3']))
1+2+3

用'+'连接各个字符串

>>> print('\nhello\n'.lstrip())
hello

>>> print('\nhello\n'.rstrip())

hello
>>> print('\nhello\n'.strip())
hello
View Code

lstirp()去除左换行,rstrip()去除右换行,strip()去除左右换行

>>> p=str.maketrans("abcdef",'123456')
>>> print("Jack".translate(p))
J13k

用于加密或替换字符 

2.列表                                                                                                                                                                        

>>> names=["Rose","Jack","Jone","Peter","David"]
>>> print(names)
['Rose', 'Jack', 'Jone', 'Peter', 'David']
>>> print(names[::2])
['Rose', 'Jone', 'David']

names就是一个列表,存了5个字符串

>>> import copy
>>> names=["Rose",["Jack","Jill"],"Jone","Peter","David"]
>>> names2=copy.deepcopy(names)#深拷贝,占独立的内存空间
>>> print(names)
['Rose', ['Jack', 'Jill'], 'Jone', 'Peter', 'David']
>>> print(names2)
['Rose', ['Jack', 'Jill'], 'Jone', 'Peter', 'David']
>>> names3=names.copy()#浅拷贝,只拷贝第一层,第二层以上只拷贝了内存地址
>>> print(names3)
['Rose', ['Jack', 'Jill'], 'Jone', 'Peter', 'David']
>>> names[2]="乔恩"
>>> names[1][0]="杰克"
>>> print(names)
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'David']
>>> print(names2)
['Rose', ['Jack', 'Jill'], 'Jone', 'Peter', 'David']
>>> print(names3)
['Rose', ['杰克', 'Jill'], 'Jone', 'Peter', 'David']
View Code

深拷贝和浅拷贝,深拷贝:占独立的内存空间;#浅拷贝:只拷贝第一层,第二层以上只拷贝了内存地址

所以深拷贝过来的name2中的第二层names2[1][0]仍然保持着"Jack",第一层names2[2]仍然保持着"Jone";而浅拷贝过来的names3中的names3[1][0]随着重新赋值变为"杰克",只有第一层names3[2]仍然保持着"Jone"

>>> names.append('Lily')
>>> print(names)
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'David', 'Lily']

append()方法,用来向已有列表添加新的元素

>>> names.insert(1,'Judy')
>>> print(names)
['Rose', 'Judy', ['杰克', 'Jill'], '乔恩', 'Peter', 'David', 'Lily']

names.insert(1,'Judy') 在位置1处插入新的元素"judy",原来的1位置元素会向后移动,原来1位置后面的元素都会相应向后移动

>>> del names[1]
>>> print(names)
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'David', 'Lily']
>>> names.pop(5)
'Lily'
>>> print(names)
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'David']
View Code

删除列表元素有两种常用方法,del names[N]和names.pop(N) , 其中N为列表元素的位置

>>> names.remove('David')
>>> print(names)
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter']

删除列表元素的另外一种方法,names.remove('David') , 其中括号内需要指定字符串

>>> names.index('Peter')
3

index查找列表元素对应的索引

>>> names
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'Rose']
>>> print(names.count("Rose"))
2

count方法统计指定列表元素的数目

>>> nums=[3,2,4,5,1]
>>> nums.sort()
>>> nums
[1, 2, 3, 4, 5]

sort方法是用来对列表进行排序,当有嵌套列表时不可以直接使用sort方法

>>> names.extend(nums)
>>> names
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'Rose', 1, 2, 3, 4, 5]

extend方法将列表nums向列表names中扩展

>>> names
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'Rose', 1, 2, 3, 4, 5]
>>> print(names[1:3])#切片
[['杰克', 'Jill'], '乔恩']
>>> print(names[3]) #从左边数0......
Peter
>>> print(names[-7])#从右边数-1......
Peter
>>> 
>>> print(names[-3:-1])
[3, 4]
>>> print(names[-2:])#默认从左向右数到-1
[4, 5]
>>> print(names[:6])#默认由0从左向右数到6
['Rose', ['杰克', 'Jill'], '乔恩', 'Peter', 'Rose', 1]
View Code

列表切片的几种方法,在今后会经常用到,请熟练掌握

>>> names.clear()
>>> names
[]

clear方法是清空列表,但是names列表仍然存在,只是内容为空

3.元组                                                                                                                                                                        

>>> names=('Rose','Jack')
>>> print(names.count('Rose'))
1
>>> print('Rose')
Rose

元组,只能查不能改,它只有2个方法:count和index(这两个方法同列表中的count和index)

4.字典                                                                                                                                                                        

 最简单的字典示例:

>>> info={
    'stu1101':"Rose",
    'stu1102':"Jack",
    'stu1103':"Peter"}
>>> print(info)
{'stu1102': 'Jack', 'stu1103': 'Peter', 'stu1101': 'Rose'}

上述info就称为字典,'stu1101','stu1102','stu1103'称为字典的key,'Rose','Jack','Peter'称为字典的value

>>> print(info["stu1101"])
Rose
>>> info["stu1101"]="露丝"
>>> print(info)
{'stu1102': 'Jack', 'stu1103': 'Peter', 'stu1101': '露丝'}

查:info['stu1101'] ,通过字典key获取对应存储的value值,

改:info['stu1101']="露丝" ,重写key对应存储的value值

>>> info["stu1104"]="tata"
>>> print(info)
{'stu1102': 'Jack', 'stu1103': 'Peter', 'stu1104': 'tata', 'stu1101': '露丝'}

增:info['stu1104']="tata",添加新的键(key)及并赋值(value)为"tata"

>>> del info["stu1104"]
>>> print(info)
{'stu1102': 'Jack', 'stu1103': 'Peter', 'stu1101': '露丝'}

删:del info['stu1104'],删除键(key)'stu1104'

>>> info.pop("stu1103")
'Peter'
>>> print(info)
{'stu1102': 'Jack', 'stu1101': '露丝'}

pop是另外一种删除的方法,还有一种随机删除方法:info.popitem() #随机删除

>>> print(info)
{'stu1102': 'Jack', 'stu1101': '露丝'}
>>> print(info.get("stu1104"))
None
>>> print(info.get("stu1101"))
露丝

安全获取键对应的value值,所谓安全就是即使该键不存在也不会报错,而是返回None;而info['stu1104'],由于键的不存在会报错

>>> print("stu1104" in info)
False

判断键在字典中是否存在,存在返回True,不存在则返回False。注意,在py2.x中的语法是 info.has_key("stu1104") 

>>> info
{'stu1102': 'Jack', 'stu1101': '露丝'}
>>> b={
    'stu1101':'Lily',
    'teacher':'Jone'}
>>> info.update(b)
>>> info
{'stu1102': 'Jack', 'teacher': 'Jone', 'stu1101': 'Lily'}

update方法:有则更新,无则添加

>>> c=dict.fromkeys([6,7,8],[1,{'name':'Jack'},444])
>>> print(c)
{8: [1, {'name': 'Jack'}, 444], 6: [1, {'name': 'Jack'}, 444], 7: [1, {'name': 'Jack'}, 444]}

初始化一个新的字典:6,7,8为字典的key,对应的value均是[1,{'name':'Jack'},444]

>>> c[7][1]['name']='Jack Chen' 
>>> c
{8: [1, {'name': 'Jack Chen'}, 444], 6: [1, {'name': 'Jack Chen'}, 444], 7: [1, {'name': 'Jack Chen'}, 444]}

三个共享一个内存地址,所以修改一个三个值都改变

>>> info.items()
dict_items([('stu1102', 'Jack'), ('teacher', 'Jone'), ('stu1101', 'Lily')])

将字典转为列表

>>> for k,v in info.items():
    print(k,v)

    
stu1102 Jack
teacher Jone
stu1101 Lily

先把字典转列表,然后再取出key和value的值,当数据量变大后,效率比较低,很慢,因为占用了很大的内存

>>> for i in info:
    print(i,info[i])

    
stu1102 Jack
teacher Jone
stu1101 Lily

直接从字典取值——高效,实际应用中推荐使用这种字典取值方法

5.练习                                                                                                                                                                        

购物车
  用户入口
  1.商品信息存在文件里

  2.已购商品,余额记录,永久留存(只有第一次需要输入工资)

  商家入口
  1.商品信息存在文件里

  2.可以添加商品,修改商品价格

 

posted on 2017-06-15 10:33  奔跑的蜗牛~~  阅读(111)  评论(0)    收藏  举报

导航