python - 从字符串中提取数字,并排序一个 numpy 列表
问题描述
我有一个字符串,其中包含许多数字。字符串如下:
['# Wavelength (m) ', 'Observation: 19909', 'Observation: 27028', 'Observation: 16652', 'Observation: 31458', 'Observation: 47548', 'Observation: 21100', 'Observation: 11768', 'Observation: 36969', 'Observation: 36656', 'Observation: 14915', 'Observation: 16766', 'Observation: 18197', 'Observation: 30915', 'Observation: 41090', 'Observation: 48054', 'Observation: 39451', 'Observation: 36999', 'Observation: 23674', 'Observation: 23095', 'Observation: 30768', 'Observation: 31991', 'Observation: 31544', 'Observation: 38008', 'Observation: 16076', 'Observation: 43937', 'Observation: 42251', 'Observation: 36537', 'Observation: 15338', 'Observation: 23522', 'Observation: 47565\n']
如何仅从该字符串中提取数字?我希望之后能够通过升序对这些数字进行排序。
另外,我有一个 numpy 列表,如下所示:
v_list = [] # will store the velocities's in this list
#Between these lines of code there is a function defined which returns some parameters and does a calculation to work out the velocities
velocity_database=v_list.append(v_kms) # store velocity of the galaxy at the end of the growing list of velocities
print("The velocities are",v_list)
给出这个控制台响应:
The velocities are [23776.307252936745, 29131.102361319136, 31615.49519071778, 17021.094456442446, 18172.375147257782, 31445.40515744717, 12649.6243034793, 14562.29510500802, 15974.290956463285, 16857.779678784023, 17837.097387347385, 20559.403621751506, 25351.46462858142, 20243.658821061777, 31645.67231184538, 23414.882588799854, 24994.813874811956, 32256.096602708625, 35258.16983158886, 26024.330289709895, 23181.488351828662, 17062.733161445263, 32680.9979695023, 21874.728746293586, 13398.338349854597, 19380.382584101142, 18428.479732444466, 19193.317697089064, 5364.615429193248, 11306.957725232642]
如何打印具有这些速度升序的新列表?
解决方案
简单的列表理解。铸造int
或float
根据您的要求。
>>> obs = ['# Wavelength (m) ', 'Observation: 19909', 'Observation: 27028', 'Observation: 16652', 'Observation: 31458', 'Observation: 47548', 'Observation: 21100', 'Observation: 11768', 'Observation: 36969', 'Observation: 36656', 'Observation: 14915', 'Observation: 16766', 'Observation: 18197', 'Observation: 30915', 'Observation: 41090', 'Observation: 48054', 'Observation: 39451', 'Observation: 36999', 'Observation: 23674', 'Observation: 23095', 'Observation: 30768', 'Observation: 31991', 'Observation: 31544', 'Observation: 38008', 'Observation: 16076', 'Observation: 43937', 'Observation: 42251', 'Observation: 36537', 'Observation: 15338', 'Observation: 23522', 'Observation: 47565\n']
>>> obs = obs[1:]
>>> obs
['Observation: 19909', 'Observation: 27028', 'Observation: 16652', 'Observation: 31458', 'Observation: 47548', 'Observation: 21100', 'Observation: 11768', 'Observation: 36969', 'Observation: 36656', 'Observation: 14915', 'Observation: 16766', 'Observation: 18197', 'Observation: 30915', 'Observation: 41090', 'Observation: 48054', 'Observation: 39451', 'Observation: 36999', 'Observation: 23674', 'Observation: 23095', 'Observation: 30768', 'Observation: 31991', 'Observation: 31544', 'Observation: 38008', 'Observation: 16076', 'Observation: 43937', 'Observation: 42251', 'Observation: 36537', 'Observation: 15338', 'Observation: 23522', 'Observation: 47565\n']
>>> obs_nums = [int(item.split(' ')[1]) for item in obs]
>>> obs_nums
[19909, 27028, 16652, 31458, 47548, 21100, 11768, 36969, 36656, 14915, 16766, 18197, 30915, 41090, 48054, 39451, 36999, 23674, 23095, 30768, 31991, 31544, 38008, 16076, 43937, 42251, 36537, 15338, 23522, 47565]
同样对于按升序打印,您可以简单地按sort
方法对列表进行排序。
>>> obs_nums.sort()
>>> obs_nums
[11768, 14915, 15338, 16076, 16652, 16766, 18197, 19909, 21100, 23095, 23522, 23674, 27028, 30768, 30915, 31458, 31544, 31991, 36537, 36656, 36969, 36999, 38008, 39451, 41090, 42251, 43937, 47548, 47565, 48054]
推荐阅读
- swift - 缺少 64 位支持。提交到 App Store 的 iOS 应用程序必须包含 64 位支持
- javascript - 淡入改变背景图像jquery
- java - android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' 在空对象引用上
- mongodb - 为什么当前数据库未在“show dbs”中列出?
- unity3d - Dialogflow API V2 统一 SDK
- java - Android Firebase Auth UI:startActivityforResult 方法声明无效,需要返回类型
- react-native - 如果包裹在 Touchable 中,则无法单击 Android 上的 Webview
- python - 如何为多个函数设置标准异常处理程序
- java - Spring Boot Hikari 找不到 DriverClassName
- python-3.x - 如何在熊猫数据帧上迭代 TfidfVectorizer()