算法小锦囊

统计序列中元素出现次数

lis=[3,2,5,2]
结果:{3: 1, 2: 2, 5: 1}

from collections import Counter
print(Counter(lis).most_common(len(lis)))

#[(2, 2), (3, 1), (5, 1)]
for x in lis:
	dic[x]=dic.get(x,0)+1
print(dic)
lis=[3,2,5,2]
for x in lis:
	dic[x]=lis.count(x)
print(dic)
lis=[3,2,5,2]
dic=dict()
for k in lis:
	if k not in dic:
		dic[k]=1
	else:
		dic[k]+=1
print(dic)

#{3: 1, 2: 2, 5: 1}

输出小星星

算法:将其分为上下两部分,先输出空格,在输出*,后换行

def star(n):
	for i in range(n):
		for j in range(n):
			if i+j==(n-1):
				print('* '*(i+1))
				break
			else:
				print(' ',end='')
	for i in range(n-1):
		for j in range(n):
			if i<j:
				print('* '*(n-1-i))
				break
			else:
				print(' ',end='')
			
>>> star(6)
     * 
    * * 
   * * * 
  * * * * 
 * * * * * 
* * * * * * 
 * * * * * 
  * * * * 
   * * * 
    * * 
     * 

算法:将*居中

>>> def main(n):
	for i in range(n):
		print(('* '*i).center(n*3))
	for i in range(n,0,-1):
		print(('* '*i).center(n*3))
		
>>> main(6)
                  
        *         
       * *        
      * * *       
     * * * *      
    * * * * *     
   * * * * * *    
    * * * * *     
     * * * *      
      * * *       
       * *        
        *  

逆序

a='123'	#字符
#1
m=list(a)
for i in range(len(a)-1,-1,-1):
	print(m[i],end='')
print('\n')
#2 切片法
print(a[::-1])
#3
m.reverse()
for letter in m:
	print(letter,end='')
#4
print(''.join(reversed(list(a))))
# int类型逆序
i=123
def f1(i):
	c=i%10
	b=i//10%10
	a=i//100
	print(c,b,a)
f1(i)

水仙花数

for i in range(100,1000,1):
	m=list(str(i))
	n=int(m[0])**3+int(m[1])**3+int(m[2])**3
	if n==i:
		print(i)

编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,基数下标的元素不变

算法:先生成一个包含20个随机整数的列表,将其下标为偶数的元素取出到另一个列表中,对其排序和逆置,再将排好序的列表放回原列表的偶数下标位。

import random
x=[random.randint(0,100) for i in range(20)]
print(x)
y=x[::2]
y.sort()
y.reverse()
x[::2]=y
print(x)

算法:

import random

list_1 = []
#生成随机整数列表
for i in range(20):
    list_1.append(random.randint(0,100))
print('生成的列表为:',list_1)
#从首位开始索引下标为偶数位元素    
for i in range(0,len(list_1),2):
    #从上一个偶数位的下一个偶数位元素开始索引
    for u in range((i+2),len(list_1),2):
        #防止索引超出范围
        if i < (len(list_1)-2):
            #比较索引元素大小
            if list_1[i] <= list_1[u]:
                #互换元素位置
                list_t = list_1[i]
                list_1[i] = list_1[u]
                list_1[u] = list_t
                
print('排序后列表为:',list_1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值