py3.x代码
import random
def randomlist():
s=set()
while len(s)<10: #保证有10个不同数
s.add(random.randint(1,100))
return s
def together(l):
return list(l[0])+list(l[1])+list(l[2])
def get_odd_even(l):
o,e=[],[]
for i in l:
if i%2==0: e.append(i)
else: o.append(i)
return [o,e]
def list_main():
list1=randomlist()
list2=randomlist()
list3=randomlist()
totallist = together([list1, list2, list3])
print(totallist)
ji, ou = get_odd_even(totallist)
print('奇数'+repr(ji))
print('偶数'+repr(ou))
list_main()
==========
>>>
{64, 65, 66, 7, 74, 11, 14, 16, 81, 18, 83, 20, 87, 25, 90, 28, 96, 38, 39, 43, 47, 48, 51, 56, 57, 60, 63}
奇数[65, 7, 11, 81, 83, 87, 25, 39, 43, 47, 51, 57, 63]
偶数[64, 66, 74, 14, 16, 18, 20, 90, 28, 96, 38, 48, 56, 60]
1、字典:两大特点:无序,键唯一
无序存储,键值对的形式存储数据
键是唯一不可修改的,不能用列表做键
2、python中不可变类型:整形,字符串,元组
可变类型:字典,列表
3、字典中方法:
增加:
dic1 = {'name':'alex'}
dic1 = ['age'] =18
*dic1 = {'age':18,'name':'alex'}
dic1.setdefault() 键存在,不改动,返回字典相应键对应的值,键不存在,在字典中增加新的键值对,并返回相应的值
查找:
通过键查找
dic1.keys()打印字典中所有键
#dict1.keys['name','age'] --转换成列表:list(dic1.keys())
dic1.values()打印字典中所有值
dic1.items()打印所有键值对
修改:
直接赋值
dic3= {'name':'alex','age':18}
dic4 = {'sex':'male','age':36}
dic3.update(dic4) #有相同的key,值会修改
删除:
dic.clear() #清空字典
del dic['name'] #删除字典中指定键值对
dic.pop('age')#删除字典中指定键值对,并返回该键值对的值
dic.popitem() #随机删除键值对,并以元组方式返回
其他操作涉及的方法:
dic1 =dict.formkeys(['host1','host2'],'test')#{'host1':'test','host2':'test'}
dic1 =dict.formkeys(['host1','host2','host3'],['test1','test2'])#{'host1':['test1','test2'],'host2':['test1','test2'],'host3':['test1','test2']}
dic1['host2'][1] = 'test3' #{'host3':['test1''test3'],'host2':['test1''test3'],'host1':['test1''test3']}
字典的嵌套:
字典的排序:
字典的遍历:
字符串的操作
a = '123'
b= 'abc'
c = a+b #123abc
c='****'.join([a,b])#123****abc
st = 'hello kitty{name} is {age}'
st.count('l') #2 统计元素个数
st.captialize() #Hello kitty 首字母大写
st.center(50,'-')#--------hello kitty --------居中
st.endswith('tty3')#判断是否以某个内容结尾
st.startswith('he')#判断是否以某个内容开头
st.find('t') #8 查找第一个元素,并返回索引,不存在是返回-1
st.format(name = 'alex',age= 37)#hello kitty alex is 37
st.format_map({'name' :'alex','age':27})#hello kitty alex is 27
st.index('t') #8 返回索引,找不到报错
‘ab'.isalnum()
'123'.isdigit()
创建一个空字典自需要一对大括号即可,从已有的键-值对映射或关键字参数创建字典需要使用 dict 函数(类)
把一个列表转为字典,列表的每一项都是长度为2的序列。
还可使用 关键字实参 (**kwargs)来调用这个函数,如下所示:
字典的基本操作与序列十分相似:
字典与序列的不同:
方法 clear 删除所有的字典项(key-value)。
复制,得到原字典的一个新副本。
效果等同于调用 dict(d) 创建新字典。
copy() 执行的是 浅复制 ,若字典的值是一个可变对象,那么复制以后,相同一个键将关联到同一个对象,修改该对象,将同时修改两个字典。
模块copy中的函数deepcopy 可执行深复制。
方法fromkeys 创建一个新字典,其中包含指定的键,且每个键对应的值都是None,或者可以提供一个i额默认值。
方法get 为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误,而get直接返回None,或者可设置默认返回值。
当字典中不存在指定键时, setdefault(k,v) 添加一个指定键-值对;且返回指定键所关联的值。
这三个方法返回值属于一种名为 字典视图 的特殊类型。字典视图可用于迭代。另外,还可确定其长度以及对其执行成员资格检查。
这三个方法自大的特点是不可变,当你的接口试图对其他用户提供一个只读字典,而不希望他们修改的时候,这三个方法是很有用的;而且当原字典发生改变时,这些方法返回的对象也会跟着改变。
方法 pop 可用于获取与指定键相关联的值,并将该键-值对从字典中删除。
popitem随机删除一个键-值对,并返回一个二维的元组 (key, value) ,因为字典是无序的,所以其弹出的顺序也是不确定的。
书上说,这个方法在大数据量时执行效率很高,但没有亲测。
方法update 使用一个字典中的项来更新另一个字典。