Python有数字、字符串、列表、元组、字典、集合六大数据类型,其中:
元组(tuple)、字符串(strings)、数字(number)
列表(list)、字典(dict)、集合(set)
序列是Python中最基本的数据结构,序列中的每个元素都分配一个数字,即索引,第一个元素的索引是0,第二个是1,依次类推。序列可以进行的操作有:索引、切片、加、乘、检查成员,内置确定序列长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现,列表的元素不需要具有相同的类型,每个值都可以通过索引进行标识。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可,如:[1,'j',3,4,3]
创建列表可以通过以下方式进行创建:
[x*2 for x in range(5)]
Python包含以下函数处理列表:
len(list)
列表元素个数max(list)
返回列表元素最大值min(list)
返回列表元素最小值sum(list)
求和list(seq)
将元组转换为列表代码如下:
# 创建一个列表
list1 = [2,4]
# 求列表长度
print(len(list1))
# 返回列表最大值
print(max(list1))
# 返回列表最小值
print(min(list1))
# 求和
print(sum(list1))
# 将元组转换成列表
print(list((1,2)))
列表的切片操作,列表也可以使用[]
进行取值操作,跟字符串一样list[start:end:step]
通过循环对列表进行遍历:
list2 = ['e','s',5,8]
# 通过下标进行元素的取出
for index in range(len(list2)):
print(list2[index])
# 通过enumrate函数进行取出
for index,elem in enumerate(list2):
print('元素为:',elem,'索引',index)
# 直接通过遍历进行取出
for elem in list2:
print(elem)
Python还包含了list方法,因为列表为可变数据类型,所以对其进行增、删、改、查操作的时候不会产生新的对象:
list.append(obj)
在列表末尾添加新的对象list.count(obj)
统计某个元素在列表中出现的次数list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.index(obj)
从列表中找出某个值第一个匹配项的索引位置list.insert(index, obj)
将对象插入列表,指定位置进行插入list.pop(obj=list[-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值list.remove(obj)
移除列表中某个值的第一个匹配项list.reverse()
反向列表中元素list.sort([func])
对原列表进行排序代码如下:
list1 = [1,2,1,2]
list2 = [4,3]
# 添加新的对象
list1.append(3)
print(list1)
# 统计某个元素出现的次数
print(list2.count(1))
# 在列表末尾追加一个列表
list1.extend(list2)
print(list1)
# 找出某个值第一个匹配项的索引位置
print(list1.index(2))
# 将对象插入列表,指定位置插入
list1.insert(2,5)
print(list1)
# 删除元素,可指定位置,默认为最后一个
list1.pop(3)
print(list1)
# 移除指定第一次出现的元素
list1.remove(3)
print(list1)
# 将列表的元素进行反向
list1.reverse()
print(list1)
# 对列表元素进行排序,默认为升序
list1.sort(reverse=True)
print(list1)
Python的元组(tuple)与串列(list)类似,不同之处在于元组的元素不能修改(以保护资料),元组可以使用小括号表示,列表使用中括号表示,元组中只包含一个元素时,需要在元素后面添加逗号:(1,)
。元组也支持用下列索引来访问元组中的值、切片操作等。
元组中的元素值不允许修改的,但可以用+号
对元组进行连接操作产生新的元组。
元组中的元素值是不允许删除的,但我们可以使用del语句
来删除整个元组。
Python内置函数处理元组:
len(tuple)
取得元组元素个数max(tuple)
查询元组中元素最大值min(tuple)
查询元组中元素最小值tuple(list)
将串列转换为元组tuple1 = (12,44,33)
# 元组个数
print(len(tuple1))
# 最大值
print(max(tuple1))
# 最小值
print(min(tuple1))
list1 = [12,432,34]
# 将字符串转换成元组
print(tuple(list1))
元组在创建时间和占用的空间上面都优于列表,我们在项目中尤其是多线程环境中可能更喜欢使用哪些不变的对象,原因是:
对象状态不能修改,可以避免由此引起的不必要的程序错误,简单的说就是一个不变的对象要比可变的对象更加容易维护
没有任何一个线程能够修改不变对象的内部状态,一个不变对象自动就是线程安全的,这样就可以省掉处理同步化的开销,一个不变对象可以方便的被共享访问。
集合(set)数据类型是无序不重复的元素的集合数据结构。集合的元素为不可修改的对象,用{}
(花括号)表示集合对象。
set内置下列常用方法:
set.add()
为集合添加元素set.clear()
移除集合中的所有元素set.remove()
移除集合中的元素,不存在的则会报错set.discard()
移除元素,不存在的元素不会报错由于集合不是很常用我在这里就不进行代码展示,感兴趣的同学可以自己去尝试。
字典(dict)是另一种可变容器模型,Python中的字典跟我们生活中使用的字典是一样一样的,它可以存储任意类型对象,与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。
dict包括下列内置函数:
del d[key]
删除字典中的键-值对key in d
判断键是否在字典key not in d
判断键不在字典iter(d)
为iter(d.keys())的简写reversed(d)
为reversed(d.keys())的简写,返回逆向迭代器len(dict)
计算字典元素个数,即键的总数list(dict)
返回字典的键的liststr(dict)
字典内容以可打印的字符串表示type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型dict包括下列方法:
dict.clear()
删除字典内所有元素dict.copy()
返回一个字典的浅复制dict.fromkeys(seq,val)
类方法。创建一个新字典,以序列seq中元素做字典的键,可选的val为字典所有键对应的初始值dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值dict.items()
以列表返回可遍历的(键, 值) 元组数组dict.keys()
返回字典所有的键的静态列表dict.setdefault(key, default=None)
和get()类似返回其值, 但如果键不存在于字典中,将会添加键并将值设为defaultdict.update(dict2)
把字典dict2的键/值对更新到dict里dict.values()
以列表返回字典中的所有值dict.pop(key[,default])
删除字典给定键 key 所对应的值,返回被删除的值。key值必须给出。 否则,返回default值dict.popitem()
随机返回并删除字典中的一对键和值(一般删除末尾对)
- 设计一个函数产生指定长度的验证码,验证码由大小写字母和数字构成。
import random
def generate_code(code_len=4):
"""
生成指定长度的验证码
:param code_len: 验证码的长度(默认4个字符)
:return: 由大小写英文字母和数字构成的随机验证码
"""
all_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
last_pos = len(all_chars) - 1
code = ''
for _ in range(code_len):
index = random.randint(0, last_pos)
code += all_chars[index]
return code
- 设计一个函数返回传入的列表中最大和第二大的元素的值。
def max2(x):
m1, m2 = (x[0], x[1]) if x[0] > x[1] else (x[1], x[0])
for index in range(2, len(x)):
if x[index] > m1:
m2 = m1
m1 = x[index]
elif x[index] > m2:
m2 = x[index]
return m1, m2
- 双色球选号。
from random import randrange, randint, sample
def display(balls):
"""
输出列表中的双色球号码
"""
for index, ball in enumerate(balls):
if index == len(balls) - 1:
print('|', end=' ')
print('%02d' % ball, end=' ')
print()
def random_select():
"""
随机选择一组号码
"""
red_balls = [x for x in range(1, 34)]
selected_balls = []
selected_balls = sample(red_balls, 6)
selected_balls.sort()
selected_balls.append(randint(1, 16))
return selected_balls
def main():
n = int(input('机选几注: '))
for _ in range(n):
display(random_select())
if __name__ == '__main__':
main()