• Python基础8 元组的创建


      1 #数据结构
      2 
      3 #元组
      4 #元组是一种不可变的序列,一旦创建就不能修改了
      5 
      6 #创建元组
      7 
      8 a = (5,4,1,8,8);
      9 print(a);
     10 #这样我们就创建了一个元组
     11 
     12 b=([1,2,3,4]);
     13 print(b);
     14 #这样也可以,但是输出的结果变成了[1,2,3,4]
     15 #[]是列表
     16 #那这里是不是就是把这个列表当成了一个元素呢?
     17 
     18 c=([1,2,3,4],[5,6,7,8]);
     19 print(b[1]);
     20 print(c);
     21 print(c[0]);
     22 #通过上面的测试
     23 #我们发现了,这里是把列表当成了元组里面的一个元素
     24 #但是,如果这里只有一个列表作为元素,你会发现你依然可以用b[]来调用里面的数据
     25 #这表示当只有一个时,可以直接用b[]来索引
     26 
     27 #其实仔细想会发现,这样的结构有点像C中间的二维数组
     28 #是这样的吗?
     29 #我们来测试一下
     30 i=1;
     31 j=2;
     32 print("第{0}层,第{1}个,对应数据为{2}".format(i,j,c[i][j]));
     33 #完全一致,这里我们显然可以把他当作二维数组来加深理解
     34 
     35 #而我们一开始学Python的时候就有提到过
     36 #Python时动态的
     37 #而不论是List还是Tuple都是可以存储不同类型的数据的
     38 
     39 d=("说人话",5,4,1,8,8,7+6j);
     40 print(d);
     41 #这里我们建立了一个有不同类型数据的元组
     42 #依然可以正常使用
     43 #但是元组真的就和二维数组没别的区别吗?
     44 #比如这样子输入
     45 #print(d[2][1]);
     46 #就一定会报错
     47 #我们知道,再二维数组中的话,建立的是矩阵
     48 #   1 2 3
     49 #   4 0 0
     50 #   5 0 0
     51 #就算我们不进行输入
     52 #最后也会自动给你补上一个0
     53 #但是元组毕竟不是数组
     54 #   说 人 话
     55 #   4
     56 #   5
     57 #元组并不会给你补上这些0
     58 #所以如果我们用上面那句代码来调用的话
     59 #必然会报错的(其实我也是偶然发现的)
     60 
     61 #和序列不一样
     62 #元组可以使用函数的形式来创造
     63 #说白了就是强制转换(就这啊,哎)
     64 
     65 #如果我们这么写,那一定是错的
     66 #因为这本质就一个强制转换
     67 #e=tuple(5,9,2,5,2);
     68 
     69 
     70 #e=tuple(5);
     71 #可是我们这么写,也是会报错
     72 #报错说int是不可迭代的
     73 #就是语法上规定不可以
     74 
     75 #注意,我们在看书的时候发现总是有[]的存在
     76 #那一般不是表示要用[]而是告诉我们这是可以填的数据
     77 #注意这里的区分一下
     78 #e=tuple(5)错误
     79 #但是e=tuple([5]);正确          (验证去96行)
     80 
     81 e=tuple([1,5,6,8,9]);
     82 
     83 print(e);
     84 #但是我们知道列表是可以和元组做直接的转换的
     85 
     86 #曲线方法来int转tuple
     87 f=666;
     88 print(tuple([f]));
     89 f=list([f]);
     90 #f=[f];
     91 tuple(f);
     92 print(f);
     93 #成功
     94 
     95 print("/////////////////////////////////////");
     96 
     97 #验证[]在这里的影响
     98 g=666;
     99 print(type([g]));#list
    100 print(type(g));#int
    101 #现在就很明显了吧
    102 #为什么tuple(666)不行但是tuple([666])可以
    103 #原因就在于这里的[]其实吧他的类型转换成了list,而不是原来的int
    104 #这样就可以迭代了
    悟已往之不谏,知来者之可追
  • 相关阅读:
    Proguard 混淆的一些经验教训!!!
    记一个奇怪的编码转换问题,及探讨“错误: 编码GBK的不可映射字符” 的原因
    我的chrome 智能扩展插件copier开源了!!!
    js 日期格式化小问题
    最后的记忆——Spring ApplicationContext
    最后的记忆——Spring BeanFactory
    归去来兮!田园将芜胡不归?
    一个线程 就是一个 人!!!
    痛苦的 java.net.BindException: Address already in use: connect —— Nacos的坑
    Mysql 的异常:The last packet successfully received from the server was 90 milliseconds ago. The last packet sent successfully to the server was 43,603,303 milliseconds ago. is longer than the server con
  • 原文地址:https://www.cnblogs.com/ljh-study/p/13734356.html
Copyright © 2020-2023  润新知