码迷,mamicode.com
首页 > 编程语言 > 详细

Python_03_字符串_数据类型_for循环_列表操作

时间:2017-09-02 22:30:03      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:扩展   输出   for循环   执行   修改   microsoft   有一个   ror   保留   

个人笔记,仅作学习记录,如有错误烦请指正

字符串:

str1 = "这是一个字符串"
str2 = 这也是一个字符串

一般字符串都需要用双引号或单引号引起来

 

在Python中双引号和单引号是一样的,但必须成对出现

 

msg = "i‘m liming" 
# 此处因为字符串中包含单引号,所以外边用双引号引起来表示字符串内容
msg = """收到消息"i‘m liming"."""
# 此处因为字符串中既包含了单引号,又包含了双引号,所以外边用三引号引起来表示字符串内容

 

str3 = """这是
一个
包含
换行格式
的字符串
"""

Python中的字符串除了用双引号或单引号引起来表示之外
还可以将字符串前后用三个单引号或双引号引起来,这样可以保留多行文本的输出格式
(多行注释其实就是一个没有被任何变量引用的字符串)

 

格式化输出:
%s: s = string 字符串占位符
%d: d = digit 整形数值占位符
%f: f = float 浮点类型占位符

判断一个字符串是不是数字组成的:
str.isdigit() # 支持普通数字,二进制数字、罗马数字,不支持汉字数字的判断
str.isnumeric()# 支持判断普通数字、罗马数字、汉字数字,但不支持二进制数字判断

 

数据类型:

整数: int(integer)
在Python3上已不区分整形和长整型,统一为整形
注:Python中存在小整数池-5~257

浮点型:float
大多数情况下用来表示小数,但并不表示浮点型只表示小数

复数:(不讨论)

布尔型:bool
True、False 两种状态

字符串:string
Python中每次创建字符串时需要在内存中开辟一块连续的空间
并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的
加号每出现一次就会在内存中重新开辟一块空间


循环:loop
有限循环:次数限制
无限循环:死循环

for循环的格式:(与常见编译型语言的语法不同)

for i in range(1,10,2):
    pass

range(x)在Python3中返回的是一个迭代器,Python2中返回的是一个列表
range(x)的参数最多为3个,第1个或2个表示返回的迭代器取值范围,如只有一个参数,表示从0到参数值前一个的迭代器
当有三个参数时,第三个参数表示迭代器的步长

_user = "TyQuan"
_passwd = "abc123"

# for i in range(3):
#     username = input("Username:")
#     password = input("Password:")
#     if username == _user and password == _passwd:
#         print("Welcome %s login..." % _user)
#         break # break 跳出、中断循环
#     else:
#         print("Invalid username or password!")

# passed_authentication = False
# for i in range(3):
#     username = input("Username:")
#     password = input("Password:")
#     if username == _user and password == _passwd:
#         print("Welcome %s login..." % _user)
#         passed_authentication = True
#         break
#     else:
#         print("Invalid username or password!")
#
# if not passed_authentication:
#     print("失败多次,账户已被锁定")

for i in range(3):
    username = input("Username:")
    password = input("Password:")
    if username == _user and password == _passwd:
        print("Welcome %s login..." % _user)
        break
    else:
        print("Invalid username or password!")
else:
# 只要for循环正常执行完毕,中间没有被break打断,就会执行else语句
    print("失败多次,账户已被锁定")

counter = 0
while counter<3:
    username = input("Username:")
    password = input("Password:")
    if username == _user and password == _passwd:
        print("Welcome %s login..." % _user)
        break
    else:
        print("Invalid username or password!")
     counter += 1
else:
#只要while循环正常执行完毕,中间没有被break打断,就会执行else语句
    print("失败多次,账户已被锁定")

continue:结束本次循环,进行下一次循环
break:跳出当前整个循环


利用标记跳出多层循环的方法:

flag = False
for i in range(x):
    ......
    for i in range(x):
        ......
        if xxx:
            flag = True
            break
    if flag:
        break


2017年9月2日18:35:23
列表:

ist = [0, 1, 2, 3, 4, 5, 6]

切片(截取列表中的元素):

list[x:y:z]

首先z表示步长(正数表示从左往右, 负数表示从右往左), 如果没有第三个参数默认步长为1
此处的x表示起始位置(包含), y表示终止位置(不包含)
当z为正数时
  如果x值不写,默认从列表第一个元素开始往后取
  如果y值不写,默认取到列表末尾(包含列表最后一个元素)
当z为负数时
  如果x值不写,默认从列表最后一个元素开始往前取
  如果y值不写,默认取到列表开头(包含列表第一个元素)
切片同样适用于字符串,且方法一致

添加:append(), insert()

list.append(x)
# 往末尾追加元素,x为要追加的元素
list.insert(index, x)
# 在下标为index的地方插入元素x

 

修改:
列表的修改可以通过下标直接进行赋值

list[0] = 1

也可以通过切片修改一部分值(不建议, 易产生混淆)

list[0:3] = [11, 22, 33]

此处如果切片的个数大于欲指定值的个数,切片内容多余部分直接丢弃
此处如果切片的个数小于预指定值的个数,预指定值多余部分直接插入

删除:remove(), pop, del

list.remove(x or list[index])
# 删除列表中list[index]的值或删除列表中为x的值
list.pop(index)
# 删除列表中下标为index所在位置的值,并返回该位置上原有的值
del x
# 删除当前程序中存在的变量, 如:
del a[0]
del a[0:3]
del a

 

查找:index()

list.index(x)
# 查找x在该列表中的位置,返回值为该值在列表中的下标,不存在报ValueError错误
list = [1, 2, 3, 2, 4, 2]
first_index = list.index(2)
second_index = list[first_index+1 : ].index(2) + first_index + 1
third_index = list[second_index+1 : ].index(2) + second_index + 1
......
# 当列表中包含多个重复元素时,无法通过index得到全部重复元素的位置

list.index(x)只能取到第一个,不过可以通过切片的方式进行逐个获取(不推荐上面的方式, 可以尝试循环来处理)
如:查询次数少

 

indexs = []
index_temp = 0
list_temp = list
temp = 0
# for i in range(len(list)):
#     if value in list_temp:
#         index_temp = list_temp.index(value)
#         indexs.append(index_temp + temp)
#         temp += index_temp+1
#         if temp<len(list):
#             list_temp = list[temp: ]
#         else:
#             break
#     else:
#         break
for i in range(list.count(value)):
    index_temp = list_temp.index(value)
    indexs.append(index_temp + temp)
    temp += index_temp+1
    list_temp = list[temp: ]

 

 

 

或:查询次数多

 

indexs = []
for i in range(len(list)):
    if value == list[i]:
        indexs.append(i)

此处得到的indexs列表,就是包含所有重复元素的位置的列表

身份判断:is
>>> type(list) is list
True
>>>

列表的其他操作:

 

list.count(x)
# 统计某个x元素在列表中出现的次数

 

list.extend(x)
# 可以在列表的末尾一次性追加另一个x序列中的多个值(x为序列,元祖或列表等)

用"+"(加号)也可以实现将一个列表中的多个元素与另一个列表合并, 相当于追加多个元素到末尾
extend与"+"的区别:extend方法修改了被扩展的列表,而原始的连接操作"+"则不然,它返回一个全新的列表

list.reverse()
# 将当前列进行倒序排列
list.sort()
# 将当前列表进行升序排列(想得到降序的话,list.sort(reverse=True))

对英文字母进行排序是根据ASCII码的顺序排列的,大写字母在前
另外有个排序函数是:sorted(list)
该函数是可以对所有的可迭代序列进行排序的,不是list类的函数
它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序。

list.clear()
# 清空列表

Python_03_字符串_数据类型_for循环_列表操作

标签:扩展   输出   for循环   执行   修改   microsoft   有一个   ror   保留   

原文地址:http://www.cnblogs.com/LoveOpenSource/p/7468019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!