python列表

######pycharm的安装#######

"- 官网下载pycharm源码包\n"

"- 解压源码包到指定位置, 超级用户建议解压到/opt目录, 普通用户建议解压到当前用户家目录;"

   tar xf pycharm-community-2017.1.4.tar.gz -C /opt/

"- 进入解压目录/opt/pycharm-community-2017.1.4/,  Install-Linux-tar.txt详细介绍了安装过程;"

cd /opt/pycharm-community-2017.1.4/bin

./pycharm.sh

选择实验环境是python2还是python3

pycharm常用快捷键

- pycharm设置界面(ctrl+alt+s)
- 修改菜单栏字体
- 修改代码栏字体
- 修改python解释器位置
- 如何安装pycharm的插件(eg:统计代码的插件Statics)
- 如何快速创建文件(alt+insert)
- 格式化python代码, 使得风格好看(ctrl+alt+l)
- 如何修改指定功能的快捷键
- 如何撤销代码的修改(ctrl+z)
- 如何取消撤销的代码的修改(ctrl+shift+z)
- 快速重命名(shift+F6)
- 快速注释代码(ctrl+/)
- 快速取消注释代码(ctrl+/)

 

#################列表####################

# c语言中的数组: 存储同一种数据类型的集和。
# 列表(打了激素的数组): 可以存储任意数据类型的集和。

li = [1, 1.2, 2j+3, True, "hello"]
print(li, type(li))

#列表特性#

services = ['http', 'ssh', 'ftp']
* 索引
 正向索引
print(services[0])
 反向索引
print(services[-1])

*切片
print(services[::-1])  # 列表的反转
print(services[1:])  # 除了第一个之外的其他元素
print(services[:-1])  # 除了最后一个之外的其他元素

*重复
print(services*3)

*连接
services1 = ['mysql', 'firewalld']
print(services + services1)

*成员操作符
print('firewalld' in services)
print('firewalld' not in services)

services=['http','ssh','ftp']
print(services[0])
http
print(services[-1])
ftp
print(services[::-1])
['ftp', 'ssh', 'http']
print(services[1:])
['ssh', 'ftp']
print(services[:-1])
['http', 'ssh']
print(services*3)
['http', 'ssh', 'ftp', 'http', 'ssh', 'ftp', 'http', 'ssh', 'ftp']
services1=['mysql','firewalld']
print(services+services1)
['http', 'ssh', 'ftp', 'mysql', 'firewalld']
print('firewalld' in services)
False

 

# 列表里面也是可以嵌套列表的#
services2 = [['http', 80], ['ssh', 22], ['ftp',21]]

嵌套列表索引

print(services2[0][0])
print(services2[-1][1])

嵌套列表的切片
print(services2[:][1])
print(services2[:-1][0])
print(services2[0][:-1])

# 如何for循环遍历#
for service in services:
    # print输出不换行,
    print(service, end=',')
# python2:print不换行

# python3:
print("hello", end=',')

#列表的增删改查#

#列表元素的增加

services = ['http', 'ssh', 'ftp']
1.
     print(services+['firewalld'])
2. append:追加: append是追加一个元素到列表中;
       services.append('firewalld')
        print(services)

3. extend:拉伸: 追加多个元素到列表中
       services.extend(['hello', 'firewalld', 'mysql'])
        print(services)

4. insert:插入
      services.insert(0, 'firewalld')
       print(services)

 #列表元素的删除

services = ['ftp', 'ssh', 'http', 'ftp']

1. pop

 services.pop(0)

2.remove
    services.remove('ssh')
     print(services)

3.clear: 清空列表里面的所有元素
    services.clear()
    print(services)
4. del : 删除列表元素的;
   del services
   print(services)
   print(services)
   print("删除列表第一个索引对应的值:", end=" ")
   del services[1]
    print(services)

#列表的修改#

services = ['ftp', 'ssh', 'http', 'ftp']

1.通过索引, 重新赋值
   services[0] = 'mysql'
    print(services)
2.通过slice(切片)
    services[:2] = ['mysql', 'firewalld']
     print(services)

#列表的查看#

import random

services = ['ftp', 'ssh', 'http', 'ftp']

1.查看出现次数

print(services.count('ftp'))


2.查看指定元素的索引值(也可与以指定范围查看)
print(services.index('ssh'))
print(services.index('ftp', 2, 8))

#排序查看, 按照Ascii码进行排序的;
print(services.sort())
print(services)

# 对字符串排序不区分大小写


"""
phones = ['alice', 'bob', 'harry', 'Borry']
phones.sort()
phones
['Borry', 'alice', 'bob', 'harry']
phones.sort(key=str.upper)
phones
['alice', 'bob', 'Borry', 'harry']

"""


# # 随机生成10个整形数, 范围为1~10之间

方法1:

import random

numbers = []

for i in range(10):
    num = random.randint(1,10)
    numbers.append(num)
print(numbers)
numbers.sort()
print(numbers)

"""

方法2:

import random
range(10)
li = list(range(10))
li
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 将原有的列表顺序打乱, 间接实现随机生成整形数
random.shuffle(li)
li
[1, 0, 4, 9, 3, 5, 8, 2, 7, 6]

 

"""

# li.copy()       ##列表的拷贝
# li.reverse()   ##列表的倒序

li=[1,4,2,5]
li1=li.copy()
id(li)
139861887408456
id(li1)
139861872424456
li.reverse()
li
[5, 2, 4, 1]

 

"""

##########知识拓展#############

#is和==的区别

变量:
    id: 在内存中存储的位置;id(a)
    value: ==
    type:变量的数据类型; type(a)
==: value, type
is: 三个都判断
** a is b ====> True, a==b一定相等, 返回True;
** a==b ====> True, a is b 不一定;

li=[1,2,3]
li1=li
li2=li.copy()
id(li)
140301820696328
id(li1)
140301820696328
id(li2)
140301825996616
li == li1
True
li is li1
True
li == li2
True
li is li2
False

#深拷贝和浅拷贝

- 直接赋值(li1 = li): 只传递对象的引用, li1指向对象li的内存地址空间,
    因此, 原有列表li改变, 被赋值的li1也会做相应的改变.

- 浅拷贝(三种实现方式 eg: li2=li.copy()):li和li2的内存地址不同,
    但是子对象的内存地址相同, 因此,原始数据改变 , 子对象也改变.

- 深拷贝(import copy, eg: li3=copy.deepcopy(li)), li和li3的内存地址不同,
         包含子对象的拷贝, 所以原始对象改变并不会造成深拷贝里面任何子项的改变.

*** 当深拷贝和浅拷贝, 针对的对象全部是不可变数据类型时, 两者效果相同;
*** 当深拷贝和浅拷贝, 针对的对象包含是可变数据类型时, 两者才有上述区别;

import copy
li=[['a','b'],1,2]
li1=li.copy()
li2=copy.deepcopy(li)
li[0].append('c')
li1
[['a', 'b', 'c'], 1, 2]
li2
[['a', 'b'], 1, 2]
id(li[0])
140321420061576
id(li1[0])
140321420061576
id(li2[0])
140321435159176

 

改进:
根据用于指定月份,打印该月份所属的季节。
**提示: 3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季

"""

假定有下面这样的列表:
    names = ['fentiao', 'fendai', 'fensi', 'apple']

    输出结果为:'I have fentiao, fendai, fensi and apple.'

 

- 用户登陆
    1) 通过索引遍历密码
- 退出

    1). 系统里面有多个用户, 用户信息目前保存在列表里面;
        users = ['root', 'cooffee']
        passwds = ['123', '456']
    2). 用户登陆(判断用户登陆是否成功):
        1). 判断用户是否存在?(inuser in users)
        2). 如果存在:
            1). 判断用户密码是否正确?
                (先找出用户对应的索引值, 根据passwds[索引值拿出该用户的密码)
                如果正确: 登陆成功, 退出循环;
                如果密码不正确, 重新登陆, 总共有三次登陆机会
        3). 如果不存在:
            重新登陆, 总共有三次登陆机会

users = ['root', 'cooffee']
passwds = ['123', '456']
trycount = 0
while trycount < 3:
    inuser = input("用户名:")
    inpasswd = input("密码:")
    trycount += 1
    if inuser in users:
        index = users.index(inuser)
        passwd = passwds[index]
        if inpasswd == passwd:
            print("%s登陆成功" %(inuser))
            break
        else:
            print("%s登陆失败:密码错误!" %(inuser))
            print("你还有%d次机会" %(3-trycount))
    else:
        print("用户%s不存在" %(inuser))
else:
    print("已经登陆三次")

后台管理员只有一个用户: admin, 密码: admin
当管理员登陆成功后, 可以管理前台会员信息.
会员信息管理包含:
添加会员信息
删除会员信息
查看会员信息
退出

print("管理员登陆".center(50, '*'))
inuser = input('UserName:')
inpasswd = input('Password:')
# 所有会员用户名
users = ['root', 'cooffee']
# 所有会员的密码
passwds = ['123', '345']

if inuser == 'admin' and inpasswd == 'admin':
    print("管理员登陆成功!")
    print("会员管理".center(50, '*'))
    while True:
        print("""
                        操作目录

           1 -    添加会员信息
           2 -    删除会员信息
           3 -    查看会员信息
           4 -    退出
        """)
        choice = input("请选择你的操作:")

        if choice == '1':
            print("添加会员信息".center(50, '*'))
            addUser = input("添加会员名:")
            if addUser in users:
                print("用户%s已经存在" % (addUser))
            else:
                addPasswd = input("密码:")
                # 需要把用户和密码添加到列表;
                users.append(addUser)
                passwds.append(addPasswd)
                print("添加用户%s成功" % (addUser))
        elif choice == '2':
            print("删除会员信息".center(50, '*'))
            delUser = input("删除会员名:")
            delIndex = users.index(delUser)
            users.remove(delUser)
            passwds.pop(delIndex)
            print("删除会员%s成功!" % (delUser))

        elif choice == '3':
            print("查看会员信息".center(50, '*'))
            print("\t用户名\t密码")
            userCount = len(users)  # 2
            # 0,1
            for i in range(userCount):
                print('\t%s\t%s' % (users[i], passwds[i]))
        elif choice == '4':
            exit()
        else:
            print("请输入正确的选择")
else:
    print("管理员登陆失败!")

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值