Python列表,字典,元组,字符串操作

1. 列表操作

1.1 列表的定义:

names = ["wangjing", "wangjun", "hashiqi"]
names[0] = "wangjing" ...

1.2 切片:取多个元素

names[1:3]    #包含左边,不包含右边
names[-1]      #列表中的最后一个元素
names[-3:]     #取列表的最后三个元素
names[0:3]=names[:3]    #取列表的前三个元素

1.3 追加

names.append('xiaojingzi')    #在列表的最后插入一个元素

1.4 插入

names.insert(1, 'liuyumao')    #插入一个元素,第一个参数为在列表中插入的位置

1.5 修改

names[2] = 'weichong'    #将列表的第三个元素修改

1.6 删除

names.remove('weichong')        #删除列表中'weichong'的元素
names.pop(1)                           #删除列表中第二个元素,并返回
del names[1]                            #第三种方法

1.7 扩展

names2 = [1, 2, 3, 4] 
names.extend(names2)    #['#jjkj', '4djisd', 'hashiqi', 'wangjing', 'wangjun', 1, 2, 3, 4]

1.8 copy

# 浅copy的三种形式
p1 = copy.copy(person)
p2 = person[:]
p3 = list(person)
#浅copy的用途,创建联合账号
person = ['name', ['saving', 100]]
p1 = copy.copy(person)
p2 = person[:]
p1[0] = 'ales'
p2[0] = 'fengjia'
p1[1][1] = 2000
print(p1)
print(p2)
# p1 p2 的saving都发生了变化
# 深copy的形式
names3 = copy.deepcopy(names)

1.9 统计

names=['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
names.count("Amy")            # 2

1.10 排序

names.sort()    #特殊字符,数字,大写字母,小写字母,不同的数据类型不能够放在一起排序,报错

1.11 反转

names.reverse() #反转

1.12 获取下标

names.index('xiaojingzi')    # 获取下标

2 元组

元组和列表差不多,只是一旦创建,便不能修改

names = ("alex","jack","eric")
names.count('alex')       #统计元素的个数            
names.index('ales')        #获取元素的索引

3 字符串操作

name = 'My \t name is {name} and i am {years} old'

print(name.capitalize())        # 首字母大写,不改变原来的字符串
print(name.count('a'))          # 统计字符的个数
print(name.center(50, '-'))     # name居中,不够的使用-补齐
print(name.endswith('ax'))      # 判断字符串是否是以某某结尾
print(name.expandtabs(tabsize=30))      # 扩展tab键
print(name.find('l'))   # 查找字符
print(name[3:])     # 字符串的切片
print(name.format(name='alex', years=20))   # format的格式
print(name.format_map({'name': 'laex', 'years': 12}))   # 字典
print('avc278'.isalnum())   # 只包含英文字符和数字
print('abA'.isalpha())  # 纯英文字符
print('1A'.isdecimal())     # 是否是十进制
print('232'.isdigit())  # 判断是否是数字
print('True'.isidentifier())      # 判断是否是合法的标识符
print('a A'.islower())  # 判断是不是小写
print('33.3'.isnumeric())   # 判断是不是数字
print(' '.isspace())    # 判断是不是空格
print('My Name Is'.istitle())   # 判断是不是标题,每个字母开头必须大写
print('My Name Is'.isprintable())   # 判断是否能够打印
print('My Name Is'.isupper())   # 判断是否是大写
print([''.join(['1', '2', '3'])])  # 字符拼接成字符串
print(name.ljust(50, '*').format(name='wangjing', years=20))    # 保证最小长度为50,不够长度在最右边补*
print(name.rjust(50, '-').format(name='wangjing', years=20))    # 保证最小长度为50,不够长度在最左边补-
print('Ales'.lower())   # 字符串全部转换成小写
print('Ales'.upper())   # 字符串全部转换成大写
print('\nAlex\n'.lstrip())    # 去掉左边的空格和回车
print('\nAlex\n'.rstrip())    # 去掉右边的空格和回车
print('\nAlex\n'.strip())   # 同时去掉左边和右边的回车以及换行
p = str.maketrans('abcdef', '123456')   # 将abcdef 分别用123456来代替
print('alex li'.translate(p))   # 使用P的代替规则来改写字符串
print('alesl'.replace('l', 'L', 1))     # 将原字符串中的内容使用新的字符来代替,1代表代替其中的几个字符
print('alesl'.rfind('8'))   # 从左往右查找返回靠右侧的所查找的字符的索引,查找不到返回-1
print('alex lil'.split('l'))   # 将字符串按照空格(默认)分割
print('alex\n lil'.splitlines())   # 将字符串按照换行分割
print('alex li'.swapcase())     # 字符全部转换成大写
print('ales li'.title())        # 字符转换成标题输出,每个单词大写
print('lex li'.zfill(50))       # 不够用0填充

4 字典操作

4.1 字典的语法

info = {
    'stu1101': 'TengLan Wu',
    'stu1102': 'LongZe Luola',
    'stu1103': 'XizoZe Maliya'
}

字典的特性:

字典是无序的并且关键字必须是唯一的

4.2 增加

info['stu1104'] = 'CangjingKong'    # 字典增加

4.3 修改

info['stu1101'] = '武藤兰'     # 字典修改

4.4 删除

del info['stu1101']     # 字典删除
info.pop('stu1102')     # 字典删除
info.popitem()          # 随机删除一个

4.5 字典查询

info.get('stu1103')        #安全获取,没有的话返回none
info['stu1101']

4.6 字典合并

b = {
    'stu1104': 'xiaojignzi',
    'stu1106': 'xiaojunzi'
}
info.update(b)  # 两个字典合并,如果info中有的元素,则修改,如果没有,则添加

4.7 字典转换成列表

print(info.items())  # 字典转换成列表

4.8 字典的初始化

c = dict.fromkeys([6, 7, 8], [1, {'name': 'alex'}, 444])    # 初始化字典
c[7][1]['name'] = 'Jack'        #注意:三个占用同一个内存,一个修改全部修改
# {8: [1, {'name': 'Jack'}, 444], 6: [1, {'name': 'Jack'}, 444], 7: [1, {'name': 'Jack'}, 444]}

4.9 判断是否在字典中

'stu1103' in info

4.10 字典中有该元素不做操作,没有则添加

info.setdefault('stu1103', 'baiduyun')  # 如果没有该元素,则添加,有则不做操作

4.11 字典的遍历

for i in info:      # 字典的循环,i返回字典的索引,速度快,推荐
    print(i, info[i])

for k, v in info.items():        #第二种方法,不推荐
    print(k, v)

5. 购物车实例

product_list = [
    ('iphone', 5800),
    ('mac', 9800),
    ('Bike', 800),
    ('Watch', 10600),
    ('coffee', 31),
    ('alex python', 120),
]
shopping_list = []
salary = input("Input your salary:")
if salary.isdigit():
    salary = int(salary)
    while True:
        for index, item in enumerate(product_list):
            print(index, item)
        user_choice = input("选择要买嘛?>>>:")
        if user_choice.isdigit():
            user_choice = int(user_choice)
            if user_choice < len(product_list) and user_choice >= 0:
                p_item = product_list[user_choice]
                if p_item[1] <= salary:
                    shopping_list.append(p_item)
                    salary = salary - p_item[1]
                    print("Add %s into shopping cart, your current balance is %d" % (p_item, salary))
                else:
                    print('033[41;lm你的余额只剩下[%s]啦,还没个毛线\033[Om' % salary)
            else:
                print('product code [%s] is not exitst!' % user_choice)
        elif user_choice == 'q':
            print('-------shopping list---------')
            for p in shopping_list:
                print(p)
            print("your current balance:", salary)
            exit()
    else:
        print('invalid option')

6. 三级菜单实例

data = {
    '北京': {
        '昌平': {
            '沙河': ['lodboy', 'test'],
            '天通苑': ['链家地产', '我爱我家'],
        },
        '朝阳': {
            '望京': ['奔驰', '陌陌'],
            '国贸': ['CICC', 'HP'],
            '动直门': ['Advent', '飞信'],
        },
        '海定': {

        },
    },
    '山东': {
        '德州': {},
        '青岛': {},
        '济南': {},
    },
    '广东': {
        '东莞': {},
    }
}

exit_flag = False


while not exit_flag:
    for i in data:
        print(i)
    choice = input('选择进入1>>')
    if choice in data:
        while not exit_flag:
            for i2 in data[choice]:
                print('\t', i2)
            choice2 = input('选择进入2>>')
            if choice2 in data[choice]:
                while not exit_flag:
                    for i3 in data[choice][choice2]:
                        print('\t', i3)
                    choice3 = input('选择进入3>>')
                    if choice3 in data[choice][choice2]:
                        for i4 in data[choice][choice2][choice3]:
                            print('\t\t', i4)
                        choice4 = input('最后一层')
                        if choice4 == 'b':
                            pass    # 什么都不做
                        elif choice4 == 'q':
                            exit_flag = True
                    elif choice3 == 'b':
                        break
                    elif choice3 == 'q':
                        exit_flag = True
            elif choice2 == 'b':
                break
            elif choice2 == 'q':
                exit_flag = True
    elif choice == 'b':
        break
    elif choice == 'q':
        exit_flag = True

猜你喜欢

转载自www.cnblogs.com/feng-ying/p/9389922.html