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 #这样就可以迭代了
悟已往之不谏,知来者之可追
原文地址:https://www.cnblogs.com/ljh-study/p/13734356.html