文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Python3】04、内置数据结构

2023-01-31 08:12

关注



1、把字符串形式的整数或浮点数转化为int或float, 不适用int和float函数

In [57]: str1 = "2468.1357"

In [58]: d1 = {"0":0, "1":1, "2":2, "3":3, "4":4, "5":5, "6":6, "7":7, "8":8, "
    ...: 9":9}
    
In [59]: int1, float1 = str1.split(".")     #整数就报错了,不够严谨

In [60]: sum1 = 0

In [61]: sum2 = 0

In [62]: for k, v in enumerate(int1):
    ...:     sum1 += d1[v] * 10 ** (len(int1) - k - 1)
    ...: for i, j in enumerate(float1):
    ...:     sum2 += d1[j] * 10 ** (-(i + 1))
    ...: print(sum1 + sum2)
    ...: 
2468.1357

#############
In [75]: mapping = {str(x):x for x in range(9)}

In [76]: mapping
Out[76]: {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8}

In [78]: s.partition('.')
Out[78]: ('123', '.', '456')

In [81]: s = "123"

In [82]: s.partition('.')
Out[82]: ('123', '', '')

In [83]: s = "12.3"

In [84]: s.partition('.')
Out[84]: ('12', '.', '3')

In [93]: s = "123.456"

In [94]: i, _, f = s.partition('.')

In [97]: ret = 0

In [98]: for idx, x in enumerate(i[::-1]):
    ...:     ret += mapping[x] * 10 ** idx
    ...:     

In [99]: ret
Out[99]: 123

In [100]: for idx, x in enumerate(f):
     ...:     ret += mapping[x] / 10 ** (idx+1)
     ...:     

In [101]: ret
Out[101]: 123.456        #结果可能会有精度的问题


###先全部当成整数来运算###
In [106]: ret = 0

In [107]: for idx, x in enumerate((i+f)[::-1]):
     ...:     ret += mapping[x] * 10 ** idx
     ...:     

In [108]: ret / 10 ** len(f)
Out[108]: 123.456             #精度损失会少一点


2、移除一个列表中的重复元素,并保持列表原来的顺序

In [33]: l1 = [1, 3, 5, 7, "a", 7, 3, 1, "a", "b", "ab"]

In [34]: l2 = []

In [35]: for i in l1:
    ...:     if i not in l2:         #O(n),效率不高
    ...:         l2.append(i)
    ...: print(l2)
    ...: 
[1, 3, 5, 7, 'a', 'b', 'ab']

###############
In [7]: l1 = [1, 3 ,5, 7, "a", "b", 5, 3, 1, "ab"]

In [8]: s = set()

In [9]: new_lst = []

In [10]: for x in l1:
    ...:     if x not in s:         #O(1),空间换时间
    ...:         new_lst.append(x)
    ...:     s.add(x)
    ...:     

In [12]: new_lst
Out[12]: [1, 3, 5, 7, 'a', 'b', 'ab']


3、统计文本中各单词出现的次数

In [170]: str1 = '''Hello world  I like Python i like python too he he python i
     ...:  i world'''

In [171]: l1 = str1.split()

In [172]: j = 1

In [173]: d1 = {}

In [174]: for x in l1:
     ...:     if x not in d1:       #思路对了
     ...:         d1[x] = j
     ...:     else:
     ...:         d1[x] += 1
     ...: print(d1)
     ...: for k in d1:
     ...:     print("The {} count: {}".format(k, d1[k]))
     ...:     
{'i': 3, 'Python': 1, 'I': 1, 'too': 1, 'python': 2, 'like': 2, 'Hello': 1, 'he': 2, 'world': 2}
The i count: 3
The Python count: 1
The I count: 1
The too count: 1
The python count: 2
The like count: 2
The Hello count: 1
The he count: 2
The world count: 2
########################
In [124]: s = "i am very very love python"

In [125]: counter = {}

In [126]: for word in s.split():
     ...:     if word not in counter.keys():
     ...:         counter[word] = 0
     ...:     counter[word] += 1
     ...: counter
     ...:  
Out[126]: {'am': 1, 'i': 1, 'love': 1, 'python': 1, 'very': 2}

#####更简洁的判断方法##########
counter[word] = counter.get(word, 0)+ 1


4、把1~4000 之间的任意整数转化为罗马数字

罗马数字是阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字:

Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。

记数的方法:

  1.    相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;

  2.    小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;

  3.    小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;

  4.    在一个数的上面画一条横线,表示这个数增值 1,000 倍,如 =5000。

############################


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯