鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

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

[复制链接]
发表于 2017-10-31 11:19:17 | 显示全部楼层
  1. def main(string):
  2.         list1 =[]
  3.         for i in range(len(string)):
  4.                 list1.append(ord(string[i]))
  5.                 list1.sort()
  6.         for i in list1:
  7.                 print(string.index(chr(i)),end =',')

  8.                
  9. >>> main('python')
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2017-10-31 14:24:06 | 显示全部楼层
while True:
    a = input()
    if a != ' ':
        b = sorted(list(a))
        c = [i for i in range(len(a))]
        d = []
        for i in list(a):
            e = dict(zip(b,c))
            d.append(e[i])
        print(d)
萌新只能做成这样了

评分

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

查看全部评分

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

使用道具 举报

发表于 2017-11-1 10:36:00 | 显示全部楼层
  1. def sorted_ascii(x):
  2.     return [sorted([ord(i) for i in x]).index(ord(j)) for j in x]

  3. if __name__ == '__main__':
  4.     print(sorted_ascii('python'))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 14:10:43 | 显示全部楼层
本帖最后由 justinan 于 2017-11-1 14:16 编辑
  1. # 逻辑
  2. def haha(string):
  3.     t = list(string)
  4.     s = sorted(list(string))
  5.     return [t.index(i) for i in s]

  6. # 一行


  7. [list(string).index(i) for i in sorted(list(string))]

复制代码

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

使用道具 举报

发表于 2017-11-1 17:50:40 | 显示全部楼层
本帖最后由 yang_zhong_well 于 2017-11-1 17:52 编辑

新手,来支持下楼楼
  1. def ascii_sort():
  2.     str = raw_input("请输入字符串:")
  3.     list1 = sorted(str)
  4.     list2 = []
  5.     for i in list1:
  6.         list2.append(str.index(i))
  7.     print list2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-2 17:23:14 | 显示全部楼层
python=[0,1,2,3,4,5,6]
print(sorted(python))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-12 10:25:51 | 显示全部楼层
本帖最后由 shigure_takimi 于 2017-12-12 10:37 编辑
  1. def changeStr(string):
  2.     return [dict(zip(sorted(string), range(len(string))))[c] for c in string] if len(string)==len(set(string)) else None

  3. print(changeStr('python'))
  4. print(changeStr('aabb'))

  5. ##  >>>
  6. ##  [3, 5, 4, 0, 2, 1]
  7. ##  None



  8. def changeStr(string):
  9.     return [sorted(string).index(c) for c in string]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-31 10:06:45 | 显示全部楼层
def main(string):
    s1=list(string)
    s1.sort()
    s2=list(string)
    list1=[]
   
    for i in s2:
        list1.append(s1.index(i))

    print(list1)

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

使用道具 举报

头像被屏蔽
发表于 2018-8-13 14:31:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-14 14:40:56 | 显示全部楼层
  1. return [sorted(str1).index(each) for each in str1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 13:13:36 | 显示全部楼层
  1. def func(string):return [string.index(i)for i in sorted(string)]
复制代码
忽然发现大家的代码基本都一样……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 14:28:11 | 显示全部楼层
交作业
  1. import re
  2. str1 = input("请输入字符串")
  3. while re.match(r'[0-9a-zA-Z]+',str1):
  4.     if len(list(str1)) == len(set(str1)):
  5.         break
  6.     else:
  7.         str1 = input("输入有误请重试")                #正则表达式和集合检测输入格式:没有重复的数字大小写字符
  8. list1 = sorted(list(str1)[:])                         #将输入字符排序
  9. result = []
  10. for each in list(str1):                              
  11.     result.append(list1.index(each))                  #匹配序号
  12. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 14:45:35 | 显示全部楼层
复习了下,增加了列表生成式解法
  1. import re
  2. def answer1(str1):
  3.     list1 = sorted(list(str1)[:])                         #将输入字符排序
  4.     result = []
  5.     for each in list(str1):
  6.         result.append(list1.index(each))                  #匹配序号
  7.     print(result)

  8. def answer2(str1):
  9.     print([sorted(str1).index(i) for i in str1])

  10. if __name__ == "__main__":
  11.     str1 = input("请输入字符串")
  12.     while re.match(r'[0-9a-zA-Z]+', str1):
  13.         if len(list(str1)) == len(set(str1)):
  14.             break
  15.         else:
  16.             str1 = input("输入有误请重试")  # 正则表达式和集合检测输入格式:没有重复的数字大小写字符
  17.     answer1(str1)
  18.     print("---------------")
  19.     answer2(str1)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 14:51:27 | 显示全部楼层
永恒的蓝色梦想 发表于 2019-8-18 13:13
忽然发现大家的代码基本都一样……

你这个代码不同,返回的是排序后序列在原字符串的序号,与题意不同。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 15:01:31 | 显示全部楼层
panheng 发表于 2019-8-18 14:51
你这个代码不同,返回的是排序后序列在原字符串的序号,与题意不同。

老哥那你写的什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 15:03:09 | 显示全部楼层
panheng 发表于 2019-8-18 14:45
复习了下,增加了列表生成式解法

老哥恕我直言,你的代码太繁琐了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 15:03:59 | 显示全部楼层
本帖最后由 panheng 于 2019-8-18 15:06 编辑


和你楼上30#的一样

解法2也只有1行,多出的是按题意滤掉非法输入而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 15:08:07 | 显示全部楼层
panheng 发表于 2019-8-18 15:03
和你楼上30#的一样

解法2也只有1行,多出的是按题意滤掉非法输入而已

然而两种解法完全一样,而且我的做法可以省去多次计算,再见。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 15:33:36 | 显示全部楼层
永恒的蓝色梦想 发表于 2019-8-18 15:08
然而两种解法完全一样,而且我的做法可以省去多次计算,再见。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 21:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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