鱼C论坛

 找回密码
 立即注册
查看: 5051|回复: 38

[技术交流] Python:每日一题 118

[复制链接]
发表于 2017-10-29 19:12:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2017-10-31 21:08 编辑

先我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
一个字符串为没有重复的数字大小写字母组成,据此输出一个数字的列表,其元素为字符串中字符ascii码由小到大的位置(首位为0),例如:
字符串为"python",输出[3, 5, 4, 0, 2, 1]



题目非常简单,可以用一个语句完成哟。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-29 21:13:20 | 显示全部楼层
  1. def get_order(st):
  2.     ls = list(st)
  3.     ls.sort()
  4.     result = []
  5.     for each in st:
  6.         result.append(ls.index(each))
  7.     return result
复制代码

评分

参与人数 1鱼币 +2 收起 理由
冬雪雪冬 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-29 21:52:50 From FishC Mobile | 显示全部楼层
  1. print (lambda s: [s.find(e) for e in sorted(list(s))])('python')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-29 21:53:35 | 显示全部楼层
list1=sorted(list(enumerate(list('python'))),key=lambda x:x[1]),只想到了这,放弃了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-29 23:02:30 | 显示全部楼层
本帖最后由 ooxx7788 于 2017-10-29 23:21 编辑
  1. [s.index(i) for i in sorted(s, key=ord)]
复制代码

评分

参与人数 1鱼币 +3 收起 理由
冬雪雪冬 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-29 23:05:54 | 显示全部楼层
  1. [sorted('python').index(x) for x in 'python']
复制代码

评分

参与人数 1鱼币 +3 收起 理由
冬雪雪冬 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 06:56:08 | 显示全部楼层
  1. n = input()
  2. list1 = []
  3. for each in n:
  4. list1.append("%c"%each)
  5. for each in list1:
  6. each = int(each)
  7. print(list1)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 09:26:10 | 显示全部楼层
  1. print(sorted(input('输入一个不重复数字大小写字母组成的字符串:')))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 11:48:56 | 显示全部楼层
  1. [sorted([chr(ord(i)) for i in s]).index(i) for i in s]
复制代码

评分

参与人数 1鱼币 +3 收起 理由
冬雪雪冬 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 12:21:44 | 显示全部楼层
  1. >>> numpy.unique(list('pythonpython'),1)[1].tolist()
  2. [3, 5, 4, 0, 2, 1]
复制代码

评分

参与人数 1鱼币 +3 收起 理由
冬雪雪冬 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 12:40:11 | 显示全部楼层
初學者報到~怎麼擠在一行....TOT

  1. a=input("輸入一个字符串为没有重复的数字大小写字母组成 : ")
  2. c=[i for i in range(len(a))  for x in range(len(a)) if  a[i]<=a[x] ]
  3. b=[len(a)-c.count(i) for i in range(max(c)+1)]
  4. print(b)
复制代码

评分

参与人数 1鱼币 +2 收起 理由
冬雪雪冬 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 12:40:15 | 显示全部楼层
本帖最后由 口可口可 于 2017-10-30 12:53 编辑
  1. def main (string):
  2.     list1 = list(string)
  3.     list2=[]
  4.     for j in sorted(list1):
  5.        list2.append(list1.index(j))
  6.     print(list2)

  7. >>>main('python')
  8. [3, 5, 4, 0, 2, 1]
复制代码

评分

参与人数 1鱼币 +2 收起 理由
冬雪雪冬 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 12:47:44 | 显示全部楼层
  1. >>> (lambda s:[s.index(c)for c in sorted(set(s))])('pythonpython')
  2. [3, 5, 4, 0, 2, 1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 13:06:25 | 显示全部楼层
  1. tar = input("Please enter a non-overlap-letter string:")
  2. print(sorted(range(len(tar)), key = tar.__getitem__))
复制代码

评分

参与人数 1鱼币 +3 收起 理由
冬雪雪冬 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 15:16:07 | 显示全部楼层
没有做到1行
考虑了重复
  1. str1 = list(input("please input a string: "))

  2. str2 = list(set(str1.copy()))
  3. str2.sort()

  4. nums = []
  5. for each in str1:
  6.     nums.append(str2.index(each))

  7. print(nums)
复制代码

评分

参与人数 1鱼币 +2 收起 理由
冬雪雪冬 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 15:24:09 From FishC Mobile | 显示全部楼层
InputStr = "PYTHON"
Output   = list()
templist = list(InputStr)
for each in InputStr
    Output.append(templist.index(each))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 17:47:58 | 显示全部楼层
  1. print(list(sorted(a).index(i)for i in 'python'))
复制代码


一条写出来还是想了很久的,对python内置函数和函数式编程还是不熟悉。

评分

参与人数 1鱼币 +2 收起 理由
冬雪雪冬 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 20:26:11 | 显示全部楼层
刚开始是这样写的
  1. fun = lambda s: [i for i,_ in sorted(enumerate(s), key=lambda x: x[1])]
复制代码

然后发现有个限制条件“没有重复”,那貌似可以这样?
  1. fun2 = lambda s: [s.index(i) for i in sorted(s)]
复制代码

评分

参与人数 1鱼币 +3 收起 理由
冬雪雪冬 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-30 21:09:48 | 显示全部楼层
  1. list1=list(dict(sorted(list(enumerate(list('python'))),key=lambda x:x[1])).keys())
复制代码

评分

参与人数 1鱼币 +3 收起 理由
冬雪雪冬 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-31 00:01:58 | 显示全部楼层
  1. a = str(input('输入字符串'))
  2. list_1=[]
  3. list_3=[]

  4. for i in a:
  5.     list_1.append(ord(i))
  6. print(list_1)
  7.    
  8.    
  9. list_2 = sorted(list_1)
  10. print(list_2)
  11. for i in list_1:
  12.     for j in range(0,len(list_2)):
  13.         if i ==list_2[j]:
  14.             list_3.append(j)
  15. print(list_3)
复制代码

评分

参与人数 1鱼币 +2 收起 理由
冬雪雪冬 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表