python数据类型及操作

一、列表

1、创建列表(两种方式)

(1)、通过函数

a = list([1, 2, 3, 4])

(2)、赋值方式

a = [1, 2, 3, 4]

2、列表的操作

(1)、切片

注意:步长的正负代表方向,冒号最左边是开始的索引值,中间的为结束的索引值,最后一个代表步长和方向,取值范围包含开始索引值,但不包含结束索引值

a = ["e", "b", "c", "d"]
print(a[1:])                        # 取索引为1到最后的元素
print(a[1:-1])                      # 取索引为1到倒数第二个元素,-1代表倒数第一个元素的索引值                        
print(a[1::2])                      # 从索引为1的元素开始,向右步长为2取值,到最后(2代表步长和方向)
print(a[:1:-1])                     # 从最后一个元素开始直到索引为1的元素结束,由左到右步长为-1取值

(2)、增加

append(追加到最后)

a = ["b", "c", "d", "e"]
a.append("l")
print(a)

insert(将元素添加到指定索引位置)

a = ["b", "c", "d", "e"]
a.insert(l, "t")                    # 将元素插到索引值为1的位置
print(a)

(3)、修改

a = ["b", "c", "d", "e"]
a.[1] = "sam"
print(a)
a.[2::] = ["tt", "rr"]
print(a)

(4)、删除

remove(删除指定值)

a = ["b", "c", "d", "e"]
a.remove(b)
print(a)

pop(删除指定索引的值,并返回该值,默认删除最后一个元素)

a = ["b", "c", "d", "e"]
r=a.pop(0)
print(a)
print(r)

del(删除指定的值)

a = ["b", "c", "d", "e"]
del a[0]
print(a)

(5)、其它操作

count(统计)

a = [1, 3, 3, 2, 5, 0]
b = a.count(3)
print(b)

extend(扩展)

a = [1, 3, 3, 2, 5, 0]
b = [4, 7]
a.extend(b)
print(a)

index(获取指定元素索引值,第一匹配到的)

a = [1, 3, 3, 2, 5, 0]
b = a.index(3)
print(b)

reverse(首尾逆序)

a = [1, 3, 3, 2, 5, 0]
a.reverse()
print(a)

sort(排序)

a = [1, 3, 3, 2, 5, 0]
a.sort()
print(a)

二、元组

1、创建元组

a = ('r', 'b', 'c')

2、元组的操作

(1)、切片及查询

a = ("e", "b", "c", "d")
print(a[1:])                        # 取索引为1到最后的元素
print(a[1:-1])                      # 取索引为1到倒数第二个元素,-1代表倒数第一个元素的索引值                        
print(a[1::2])                      # 从索引为1的元素开始,向右步长为2取值,到最后(2代表步长和方向)
print(a[:1:-1])                     # 从最后一个元素开始直到索引为1的元素结束,由左到右步长为-1取值

(2)、其它

index(获取第一个匹配元素的索引值)

a = (1, 3, 6, 2)
b = a.index(1)

count(统计元素出现次数)

a = (1, 3, 6, 3, 2)
b = a.count(3)

三、字典

由Key和Value组成,Key为不可修改的数据类型,并且不能重复

1、创建字典(两种方法)

(1)、通过函数

a = dict((('name', 'changwei'), ("Age", '18')))
print(a)

(2)、通过赋值

a = {'Name':'sam', 'Age':17, 'Hobby':'girl' }
print(a)

2、字典操作

(1)、查

通过键查

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
print(a['Name'])

keys(取出所有键值)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
print(a.keys())

values(取出所有值)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
print(a.values())

items(取出所有键值对,每组以元组的方式展现)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
print(a.items())

(2)、修改

赋值方式(如果键不存在则创建并赋值)

例1:

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
a['Name'] = 'changwei'
print(a)

例2:

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
a['features'] = '帅'
print(a)

setdefault(如果存在则返回原来值,如果不存在添加新值并返回)

例1:

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
b = a.setdefault('Age', 20)
print(a)
print(b)

例2:

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
b = a.setdefault('ee', 20)
print(a)
print(b)

update(更新及扩展,健存则更新,不存在则添加)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
b = {'Name': 'changwei', 'Job': 'IT'}
a.update(b)
print(a)
print(b)

(3)、删除

del(删除指定键)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
del a['Age']
print(a)

clear(清空)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
a.clear()
print(a)

pop(删除指定键值对,并返回该键的值)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
b = a.pop('Hobby')
print(a)
print(b)

popitem(随机删除一个键值对,并以元组的方式返回该键值对)

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
b = a.popitem()
print(a)
print(b)

del 删除整个字典

a = {'Name': 'sam', 'Age': 17, 'Hobby': 'girl'}
del a

(4)、排序

sorted(按键值ASSIC码排序)

a = {7: 'sam', 2: 17, 6: 'girl'}
b = sorted(a)
print(b)

(5)、遍历

例1(for 循环i默认为键值):

a = {7: 'sam', 2: 17, 6: 'girl'}
for i in a:
    print(i, a[i])
例2(先转换为键值对在遍历,for循环i默认为键值对)
a = {7: 'sam', 2: 17, 6: 'girl'}
for i, v in a.items():
    print(i)

四、字符串

1、字符串操作

(1)、重复字符

print('msg'*2)

(2)、索引和切片

print('helloworld'[0:2:])

(3)、关键字in(如果包含则返回True)

print('wor' in 'hello world')

(4)、格式化输出

a = 'sam'
b = 'Good boy'
print('an %s is %s' % (a, b))

(5)、字符拼接

方法一:

a = 'sam'
b = 'Good boy'
c = a + b
print(c)

方法二:join(引号内可以插入拼接符号)

a = 'sam'
b = 'Good boy'
c = ''.join([a, b])
print(c)

2、字符常见内置方法

(1)、count(统计字符出现次数)

a = 'stringing'.count('ing')
print(a)

(2)、center(输出指定长度字符(如果长度比字符长度短,则输出字符;如果指定长度比字符长度长,则使用指定占位符补充到字符串两侧,如果左右占位符不能相等则以右侧优先级高于左侧)字符串居中)

st = 'world'
print(st.center(8, '='))

(3)、startswith(验证字符串是否以某字符串开头(返回布尔值,True,False))

st = 'world'
print(st.startswith('w'))

(4)、find(查找字符(第一个匹配的)并返回索引位置(如果不存在返回-1))

st = 'worlld'
print(st.find('o'))

(5)、format(格式化输出)

st = '{Name} is {bb} boy!'
print(st)
print(st.format(Name='sam', bb='good'))

(6)、lower(将大写转换为小写)

st = 'SaM Is Good Man!'
print(st.lower())

(7)、upper(将小写转换为大写)

st = 'SaM Is Good Man!'
print(st.upper())

(8)、strip(去掉行首和行尾的空格和换行符)

st = '  SaM Is Good Man!  '
print(st.strip())

(9)、replace(替换掉字符串中的某字符为,新的某字符;后面可以跟整数表示替换多少个,默认为所有)

例1:

st = '  SaM Is Good Man!  '
print(st.replace('a', 'yyyy'))

例2:

st = '  SaM Is Good Man! a '
print(st.replace('a', 'yyyy', 1))

(10)、split(使用指定字符分隔字符,使之成为列表,可以指定分隔符的个数)

例1:

st = 'SaM Is Good Man!'
print(st.split('a'))

例2:

st = 'SaM Is Goaod Man!'
print(st.split('a', 2))

3、其它内置方法

(1)、capitalize(字符串首字母大写)

st = 'sam is good man!'
print(st.capitalize())

(2)、endswith(判断是否以某字符串结尾,返回布尔值,True,False)

st = 'sam is good man!'
print(st.endswith('man!'))

(3)、format_map(以字典形式的格式化输出)

st = 'sam {bb} good {nn}!'
print(st.format_map({'bb': 'is', 'nn': 'man'}))

(4)、index(查找字符索引值(以第一个为准))

st = 'sam is good man!'
print(st.index('a'))

(5)、isalnum(判断字符串是否由字母或数字组成,返回布尔值)

print('22dd'.isalnum())

(6)、isdigit(判断是否为数字(整形的),返回布尔值)

print('22'.isdigit())

(7)、isnumeric(判断是否为整形数字,返回布尔值)

print('22'.isnumeric())

(8)、islower(是否为全小写,返回布尔值)

print('2aa2'.islower())

(9)、isupper(是否为全大写,返回布尔值)

print('2AA2'.isupper())

(10)、isspace(是否为空格,返回布尔值)

print(' '.isspace())

(11)、title(单词首字母大写)

print('sam wen'.title())

(12)、lower(大写变小写)

print('Sam wEn'.lower())

(13)、upper(小写变大写)

print('Sam wEn'.upper())

(14)、swapcase(大变小,小变大)

print('Sam wEn'.swapcase())

五、考试

上面的内容是不全看会了?那帮我做个需求吧。

(1)、我需要一个显示全国各省市县的及地区的菜单(意思几个省,几个市就行不用真的写全)

(2)、当我运行程序后会先显示所有省的信息

(3)、当我选中了其中某个省,就显示该省下面的所有市

(4)、当我们进入了市就显示该市的所有地区

(5)、不论我在菜单的任何位置只要我输入q就可以退出菜单

(6)、当我输入b的时候可以返回上级菜单

(7)、写完了再看我下面的实现方式,有多努力只有你自己知道。

#!/bin/env python
#
##############################################################
# Author sam <changwei.wen@redcore.cn>                       #
# Examination of academic achievement                        #
#                                                            #
# Date: 2018/6/14                                            #
#                                                            #
# System: CentOS 7                                           #
#                                                            #
##############################################################
# Development environment CentOS 7                           #
##############################################################
# Bitterness of operation and maintenance
#
China_Map = {
    '辽宁': {
        '大连': {
            '北区': '学校',
            '南区': '网吧',
            '东区':'大保健'
        },
        '凌源': {
            '刀尔登': '烧锅地',
            '南大桥': '实验中学'
        }
    },
    '北京':{
        '海淀区': '红芯',
        '昌平区': '老温家',
        '朝阳区': '朝阳群众'
    },
    '河北':{
        '石家庄': {
            '美女': '胖子',
            '和尚': '老沙'
                },
        '邯郸': {
            '公交站': '222',
            '火车站': 'K113'
        },
        '闫桥': {
            '男人': '1号',
            '女人': '2号'
        }
    }
}
List_Map = China_Map
Layer_Recording = []
msg = '''
Please choose provinces or cities or regions.
Enter "q" to abort the program.
Enter the "b" back to the upper layer.
Your choice >>>   
'''
while True:
    for i in List_Map:
        print(i)
    Your_Choice = input(msg)

    if Your_Choice in List_Map:
        Layer_Recording.append(List_Map)
        List_Map = List_Map[Your_Choice]
    elif Your_Choice == 'q':
        break
    elif Your_Choice == 'b':
        if Layer_Recording == []:
            print('This is top 1!!!!')
        else:
            List_Map = Layer_Recording.pop()

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值