Rul*_*rld -1 python processing-efficiency python-3.x
我有一个清单,说
x = [0,1,2,3,"a","b","cd"]
Run Code Online (Sandbox Code Playgroud)
我想保留最小的数字和所有字母,因此在示例中它将变为
x = [0,"a","b","cd"]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?理想情况下,代码将非常高效,因为我正在为数百万个列表执行此操作。
尝试:我尝试找到min(x),但是由于列表中有字符串,因此会导致错误
我认为以下代码最有效。它不需要额外的内存,复杂度为O(N)
import sys
x = [0, 1, 2, 3, "a", "b", "cd"]
minimum = sys.maxsize # for python 3.x
# minimum = sys.maxint #for python 2
j = 0
for i in range(len(x)):
if isinstance(x[i], str):
x[j] = x[i]
j+=1
else:
minimum = min(minimum, x[i])
print([minimum]+x[:j])
Run Code Online (Sandbox Code Playgroud)
输出量
[0, 'a', 'b', 'cd']
Run Code Online (Sandbox Code Playgroud)
尝试这个:
Python 2.7
output = [s for s in x if isinstance(s, str)]
output.append(min(x))
#>>> output
#['a', 'b', 'cd', 0]
Run Code Online (Sandbox Code Playgroud)
Python3:
output = [s for s in x if isinstance(s, str)]
output.append(min([i for i in x if isinstance(i, int)]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |