python零基础学习1-基础知识4-列表, 字符串与字典

列表

import copy

list1=[] # 定义空的列表
list2=["A","B","C","D","E","F","G","H"] #定义新的列表

#------------------------取值-------------------------
print(list2)                             #['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
print(list2[0])                          #A, 打印角标为0的值
print(list2[1:3])                        #['B', 'C'], 打印角标为1, 2的值, 要头不要尾, 该行为叫做"切片"
print(list2[-1])                         #H, 打印最后一个元素
print(list2[-2:])                        #['G', 'H'], 打印最后两个元素, 尾坐标不填, 则默认为最后一个
print(list2[:3])                         #['A', 'B', 'C'], 首坐标不填, 则默认为第一个
print(list2[0:-1:2])                     #['A', 'C', 'E', 'G'], 步长为2
print(list2[::2])                        #同上

#----------------------列表追加-------------------------
list2.append("I")                  #追加元素"I"
print(list2)                       #['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

list2.insert(1,"Z")                #在目标位置插入元素Z
print(list2)                       #['A', 'Z', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

#----------------------列表变更-------------------------
list2[1]="temp"                    #修改下标为1的元素值为"temp"
print(list2)                       #['A', 'temp', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

#----------------------删除------------------------------
list2.remove("temp")               #删除值为"temp"的元素
print(list2)                        #['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

#----------------------查找-------------------------------
print(list2.index("C"))             #返回元素C的下标
print(list2.count("C"))             #返回列表中元素C的个数

#---------------------其他---------------------------------
list2.reverse()                     #列表元素做反转
print(list2)                       #['I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A']

list2.sort()                     #列表元素做升序排序
print(list2)                       #['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

list3=["bell","alex"]
list2.extend(list3)               #将list3合并入list2
print(list2)                      #['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'bell', 'alex']

#---------------------copy-----------------------------------
list4=list2
print(list4)                     #此时, list4与list2指向相同的内存地址, 修改其中一个时, 会同步修改

list5=list2.copy()
print(list5)                     #浅copy, 即只复制第一层.  如任一元素为列表, 则只复制元素的内存地址

list8=list2[:]                   #仍然为浅copy
print(list8)

list6=copy.copy(list2)           #仍然为浅copy
list7=copy.deepcopy(list2)       #深copy, 完全复制
print(list6)
print(list7)

#----------------------循环-----------------------------------
for i in list7:                       #打印所有元素
    print(i)

for index,i in enumerate(list7):     #打印所有元素及其下标
    print(index,i)

 

元组

列表的一种, 只是不能增删改, 只能查. 常用于DB链接等程序启动后不能被改动的配置.

eg: name=("alex","bell")

 

字符串

name="my name is bell, i am learning python"
#-----------------------------基本处理--------------------------------------
print(name.capitalize())   #My name is bell, i am learning python; 首字母转大写
print(name.count("n"))     #4; 字母n的个数

print(name.center(50,"-"))   #------my name is bell, i am learning python-------; 两边补齐至50字符
print(name.ljust(50,"-"))    #my name is bell, i am learning python-------------
print(name.rjust(50,"-"))    #-------------my name is bell, i am learning python
print(name.zfill(50))        #0000000000000my name is bell, i am learning python

print("-".join(["a","b","c"]))    #a-b-c, 将列表元素连接起来

print(name.lower(),name.upper(), name.swapcase())  # 转小写, 转大写, 大小写互转

print(name.lstrip(), name.rstrip(), name.strip())   #去掉左侧, 右侧, 两边的空格与回车

#-----------------------------判断起始/终止字符--------------------------------
print(name.endswith("on"),name.endswith("a"))   #True False; 判断是否以指定字符串结尾
print(name.startswith("my"))

#-----------------------------查找--------------------------------------------
print(name.find("a"),name.rfind("a"))                            #从左侧/右侧开始查找指定字符串, 返回角标, 只查找第一个
print(name[name.find("a"):])                     #ame is bell, i am learning python, 字符串可直接做列表用, 进行切片

#-----------------------------判断数据类型------------------------------------
print("a12".isalnum(),"a12.".isalnum())         #True False, 判断字符串是否只由英文字母+阿拉伯数字组成
print("erwerwe".isalpha(),"fewrewr1".isalpha())  #True False, 判断字符串是否只由英文字母组成
print("12".isdigit(),"0".isdigit(),"12.1".isdigit(),"-1".isdigit())  #TTrue True False False, 判断字符串是否为整数
print("ABC".islower(),"ABC".isupper())      #判断字符串是否为小写, 大写
print(" ".isspace())                         #判断字符串是否为空格
print("Tell Me".istitle())                  #判断是否每个单词都进行了首字母大写

#-------------------------------特殊处理----------------------------------------
p=str.maketrans("bell","1234")
s="bell is sing a song \nnamed 'jingle bell'"
print(s.translate(p))                #1244 is sing a song nam2d 'jing42 1244'

print(s.replace("bell","bella",1))   #bella is sing a song named 'jingle bell'; 1为要替换的数量

print(s.split(" "))          #['bell', 'is', 'sing', 'a', 'song', '\nnamed', "'jingle", "bell'"]
print(s.splitlines())          #['bell is sing a song ', "named 'jingle bell'"]

 字典

#key-value,定义一个字典
info={
    "name":"bell",
    "no":"0001",
    "sex":"female",
}
#----------------------------查找------------------------------
print(info)                    #{'name': 'bell', 'no': '0001', 'sex': 'female'}; 无序打印
print(info["name"])           #bell; 使用key值查找value, 如果key不存在会报错

print(info.keys())                       #dict_keys(['name', 'no', 'sex']) 打印所有key值
print(info.values())                     #dict_values(['bell', '0001', 'female']) 打印所有value

print(info.get("name"),info.get("address"))            #bell None; 如果key值存在就返回value, 如果不存在就返回None

print(info.setdefault("name","eva"))                    #bell, 如果key值存在, 就返回value, 不对字段做任何修改
print(info)

print(info.setdefault("age","29"))                    #bell, 如果key值不存在, 将值加入字典中
print(info)
#----------------------------修改-------------------------------
info["name"]="maple"
print(info)                    #{'name': 'maple', 'no': '0001', 'sex': 'female'}

#----------------------------添加--------------------------------
info["hobby"]="shopping"
print(info)                     #{'name': 'maple', 'no': '0001', 'sex': 'female', 'hobby': 'shopping'}

#----------------------------删除---------------------------------
del info["sex"]
print(info)                     #{'name': 'maple', 'no': '0001', 'hobby': 'shopping'}

info.pop("hobby")
print(info)                     #{'name': 'maple', 'no': '0001'}

info.popitem()                  #随机删除一个
print(info)

#---------------------------合并及转化-----------------------------------
score={
    "no":15086,
    "math":137,
    "Chinese":124,
    "English":110,
}

info.update(score)         #相同的key值, 更新value; 不同的key值, 进行插入
print(info)

print(info.items())        #dict_items([('name', 'maple'), ('no', 15086), ('math', 137), ('Chinese', 124), ('English', 110)]), 转化为列表

#-----------------------------创建--------------------------------------
print(dict.fromkeys([6,7,8]))             #{6: None, 7: None, 8: None}, 仅创建key值
print(dict.fromkeys([6,7,8], "test"))    #{6: 'test', 7: 'test', 8: 'test'}
print(dict.fromkeys([6,7,8], [1,{"name":"bell","sex":"female"},1]))
#{6: [1, {'name': 'bell', 'sex': 'female'}, 1], 7: [1, {'name': 'bell', 'sex': 'female'}, 1], 8: [1, {'name': 'bell', 'sex': 'female'}, 1]}
#注意: 第二层的字典仅赋值内存地址


#-----------------------------循环---------------------------------------
#方法1 (效率远高于方法2)
for i in info:
    print(i, info[i])             #打印key值, 及value值
#方法2
for k, v in info.items()
    print(k,v)

 

posted on 2017-09-22 17:27  bell03  阅读(147)  评论(0)    收藏  举报

导航