【Python学习笔记】数组小练习

1、创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1

x = np.zeros(10, dtype=int)
x[5] = 5
print(x)

2、创建一个元素为从10到49的ndarray对象

x = np.arange(10, 50)
print(x)

3、将第2题的所有元素位置反转

x = np.arange(10, 50)
print(x[::-1])

4、使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素

x = np.random.random(size=(10, 10))
print(x)
print(x.max())
print(x.min())

5、创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0,如下图

x = np.ones((10, 10))
x[1:9,1:9] = 0
print(x)

6、创建一个每一行都是从0到4的5*5矩阵

x = np.array([[0,1,2,3,4]]*5)
print(x)

7、创建一个范围在(0,1)之间的长度为12的等差数列

x = np.linspace(0, 1, num=12)
print(x)

8、网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码的有效性。
以下是检查密码的标准:

  1. [a-z]之间至少有1个字母
  2. [0-9]之间至少有1个数字
  3. [A-Z]之间至少有一个字母
  4. [$#@]中至少有1个字符
    4.最短交易密码长度:6
    5.交易密码的最大长度:12
    您的程序应接受一系列逗号分隔的密码,并将根据上述标准进行检查。将打印符合条件的密码,每个密码用逗号分隔。
    例:如果以下密码作为程序的输入:
    ABd1234@1,aF1#,2w3E*,2We3345
    然后,程序的输出应该是:
    ABd1234@1
    提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
import re
str1 = 'ABd1234@1,aF1#,2w3E*,2We3345'
strs = str1.split(',')
# print(strs)
rightstring = ''

for s in strs:
    flag = False
    if 6<=len(s)<=12:
        if re.search("[a-z]", s):
            if re.search("[0-9]", s):
                if re.search("[A-Z]", s):
                    if re.search("[$#@]", s):
                        flag = True
    if flag:
        if rightstring == '':
            rightstring += s
        else:
            rightstring += ',' + s
print(rightstring)

9、您需要编写一个程序,按升序对(名称,年龄,高度)元组进行排序,其中name是字符串,age和height是数字。 元组由控制台输入。 排序标准是:
1:根据名称排序;
2:然后根据年龄排序;
3:然后按分数排序。
优先级是name> age>得分。
如果给出以下元组作为程序的输入:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85
然后,程序的输出应该是:
[(‘John’,‘20’,‘90’),(‘Jony’,‘17’,‘91’),(‘Jony’,‘17’,‘93’),(‘Json’,'21 ',‘85’),(‘Tom’,‘19’,‘80’)]
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。我们使用itemgetter来启用多个排序键。

Python中的operator模块中的itemgetter函数的作用是获取对象哪些维的数据,参数是表示维的序号。一般operator.itemgetter()函数可以结合sorted函数一起使用实现sorted的高级作用。
Python中的operator.itemgetter函数

from operator import itemgetter
 
l = []
print("请输入:")
while True:
 
    s = input()
    if not s:
        break
    l.append(tuple(s.split(",")))
 
print(sorted(l, key=itemgetter(0,1,2)))

10.使用生成器定义一个类,该生成器可以在给定范围0和n之间迭代可被7整除的数字。
提示:考虑使用yield。

python中yield的用法详解

def putNumbers(n):
    i = 0
    while i<n:
        j=i
        i=i+1
        if j%7==0:
            yield j
 
for i in putNumbers(100):
    print (i)

11.编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:
New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
然后,输出应该是:
2:2
3.:1
3?:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。

st = 'New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.'
s = st.split(' ')
x = sorted(set(s))
for xp in x:
    print(xp, ':', s.count(xp))

12、最大数
给定一组非负整数nums,重新排列它们每个数字的顺序(每个数字不可拆分)使之组成一个最 大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例1:
输入: nums = [10.2]
输出: “210”
示例2:
输入: nums = [3,30,34,5,9] .
输出: “9534330”
示例3:
输入: nums= [1]
输出: “1”
示例4:
输入: nums= [10]
输出: “10”
限定: 1 <= nums.length <= 100, 0 <= nums[i] <= 100000000

class Strlt(str):
    def __lt__(x, y):
        return x + y > y + x
 
class Solution:
    def largestNumber(self, nums):
        nums = [str(num) for num in nums]
        nums.sort(key=Strlt)
        if nums[0] == '0':
            return '0'
        else:
            return ''.join(nums)

t = Solution()
print(t.largestNumber([1, 20, 23, 30]))
  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值