ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 笔记4

2019-12-12 23:55:22  阅读:232  来源: 互联网

标签:jz nums python 笔记 转置 state enumerate print


1、转置矩阵的实现方法:

#矩阵的转置
jz=[[1,2,3],[4,5,6],[7,8,9]]
print(jz)
for i,row in enumerate(jz):
    for j,col in enumerate(row):
        if i<j:
            jz[i][j],jz[j][i]=jz[j][i],jz[i][j]
print(jz)

 #enumerate的用法:

语法:enumerate(sequence, [start=0])

  • sequence -- 一个序列、迭代器或其他支持迭代对象。
  • start -- 下标起始位置。

实例:

>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']

>>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

>>> list(enumerate(seasons, start=1)) # 下标从 1 开始

[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

另一种实现方法:

#矩阵的转置
jz=[[1,2,3],[4,5,6],[7,8,9]]
print(jz)
for i in range(len(jz)):
    for j in range(i):
            jz[i][j],jz[j][i]=jz[j][i],jz[i][j]
print(jz)

不规则矩阵转置的实现:

#不规则长矩阵的转置
jz=[[1,2,3],[4,5,6]]
print(jz)
t=[]
for row in jz:
    for i,col in enumerate(row):
        if len(t)<i+1:  #jz有几列t就要添加多少行
            t.append([])
        t[i].append(col)
print(t)

2、随机产生10个数字(不大于21),统计重复的数字有几个,分别是什么;统计不重复的数字有几个,分别是什么:

import random
nums=[]
for _ in range(10):
    nums.append(random.randrange(21))
print(nums)
s,d=[],[] #分别用来装相同的那几个数字和不同的那几个数字
lenth=len(nums)
state=[0]*lenth  #用来做标记,标记以及重复的数字的位置

for i in range(lenth): #第一层循环对每一个元素进行遍历
    flag=False   #每一个元素比较前都要重新给flag赋初值
    if state[i]==1:  #如果第i个元素已经重复了,则不用比较了,这取决于后面的state[j]=1和state[i]=1
        continue
    for j in range(i+1,lenth):  #对i后面的每一个元素都要于i位置的元素进行比较
        if state[j]==1:  
            continue
        if nums[i]==nums[j]: 
            flag=True  #重复了,给flag赋值为True,并标记state该位置为1
            state[j]=1  
    if flag:
        s.append(nums[i])
        state[i]=1
    else:
        d.append(nums[i])

print("same Array={0} has {1}".format(s,len(s)))
print("different Array={0} has {1}".format(d,len(d)))

结果:

[14, 3, 9, 12, 7, 9, 11, 17, 11, 17]
same Array=[9, 11, 17] has 3
different Array=[14, 3, 12, 7] has 4

标签:jz,nums,python,笔记,转置,state,enumerate,print
来源: https://www.cnblogs.com/mapone/p/12032352.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有