Python学习之路(一)

1、元组与list相互转换:

A、元组转list

tmp1=(9,33);   

list1=list(tmp1);   

print(list1); 

备注:如上代码会在报"'list' object is not callable",原因可能是没做转换之前list存在默认赋值,覆盖了list本身,导致报错(解释比较牵强,没有找到更合理的解释);在报错语句前加上"del list",报错问题解决

B、list转元组

list2=[48,'r'];

tu=tuple(list2);

print(tu);

执行结果:(48, 'r')

2、集合相关操作

A、添加元素:

a、add:添加元素已存在,不做任何操作;否则执行新增操作;且仅支持单个元素添加(字符串、数字、bool)等

aa=set(('test','yry','test','hello','test')); 

aa.add('hello world!'); 

aa.add('test'); 

print(aa);

执行结果:{'hello', 'test', 'yry', 'hello world!'}

b、update:可添加字符串(插入数字、字符串等会报错——‘xx’ object is not iterable)、列表、字典、元组、集合的去重插入;其中执行字符串插入时,字符串会被分解成一个个非重复的字符;字典只有key会被插入

bb={'yu',99,'hdhh',True,99};   

bb.update("hell");

bb.update([5,9]);

bb.update({'name':'xiao','yu':'iu'});

bb.update((43,88));

bb.update({90,False,'yu'});

print(bb);

执行结果:{False, True, 99, 5, 'e', 9, 'yu', 43, 'l', 'h', 'hdhh', 'name', 90, 88}

B、取差集:

a、difference: 多个集合取差集,不会影响集合本身的结果;且可以通过新变量存储集合数据

a={'a','b','c'};      b={'c','d','e'};

c=a.difference(b);

print(c);  print(a);  print(b);

执行结果:

{'b', 'a'}      {'b', 'c', 'a'}    {'c', 'd', 'e'}

b、difference_update:多个集合取差集,会影响集合本身——difference_update之前的集合,多个集合中重复部分被移除;difference_update之后的集合则不会发生改变。且此种方式不会返回新的集合(新变量存值返回None)

a={'a','b','c'};        b={'c','d','e'};

d=a.difference_update(b);

print(d);    print(a);    print(b);

执行结果:None    {'a', 'b'}    {'e', 'c', 'd'}

3、数据字典:

dic={'aa':1,'bb':'yy','cc':False};

dipdic={'test':44,"gg":{}}

s=' s@d@o'

for i in s.split('@'):

    dic['aa']=i;

    d = {};

    d[str(i)] = dic;

    dipdic["gg"].update(d);

print(dipdic);

执行结果:

{'test': 44, 'gg': {' s': {'aa': 'o', 'bb': 'yy', 'cc': False}, 'd': {'aa': 'o', 'bb': 'yy', 'cc': False}, 'o': {'aa': 'o', 'bb': 'yy', 'cc': False}}}

分析:出现重复数据原因——dic作为定义在循环外的全局变量,虽然在循环内对其中元素做了赋不同值的处理,但实际dic最终只会保持最后一次的操作;若在dic作为循环内的局部变量,则不会出现重复情况

修改后:

dipdic={'test':44,"gg":{}}

s=' s@d@o'

for i in s.split('@'):

    dic = {'aa': 1, 'bb': 'yy', 'cc': False};

    dic['aa']=i;

    d = {};

    d[str(i)] = dic;

    dipdic["gg"].update(d);

print(dipdic)

执行结果:

{'test': 44, 'gg': {' s': {'aa': ' s', 'bb': 'yy', 'cc': False}, 'd': {'aa': 'd', 'bb': 'yy', 'cc': False}, 'o': {'aa': 'o', 'bb': 'yy', 'cc': False}}}

4、循环语句:

A、实现输出杨辉三角:

n=7;

temp1=[1,1];#全局变量,用于暂存每一行的数据

for i in range(1, n+1):#python左闭右开,想要实现打印7行,最大边界需加1

    if i<2:

        print(1);

    elif  i < 3:

        print(1, end=" ");

        print(1);

    else:

        temp2=[];#临时变量,用于暂存每一行除了1之外的值

        for j in range(0,len(temp1)-1):

            temp2.append(temp1[j]+temp1[j+1]);#拼接上一行除1之外相邻数据之和

        temp1=[1]+temp2+[1];

        for x in temp1:

            print(x,end=" ");#实现每一行数据带空格输出

        print();#换行

执行结果:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

你可能感兴趣的:(Python学习之路(一))