Python编程、编写自己的函数或查找内置函数的困难
在C语言中,存在结构化查询表达式,使用它来处理集合和数组很有趣。我不确定python中是否存在这样的模块。尽管SQE实现了lambda,但python中也存在lambda表达式: 假设我只需要从集合中获取不同的值:Python编程、编写自己的函数或查找内置函数的困难,python,Python,在C语言中,存在结构化查询表达式,使用它来处理集合和数组很有趣。我不确定python中是否存在这样的模块。尽管SQE实现了lambda,但python中也存在lambda表达式: 假设我只需要从集合中获取不同的值: c# ex: List<int> arr = new List<int> {0,1,2,3,4,5,6,7,8,9}; List<int> arr2 = new List<int> { 2, 3, 4 };
c# ex:
List<int> arr = new List<int> {0,1,2,3,4,5,6,7,8,9};
List<int> arr2 = new List<int> { 2, 3, 4 };
arr.AddRange(arr2);
var qry = arr.Distinct();
foreach (var x in qry)
Console.WriteLine(x);
python ex:
arr = range(10) + [2,4,3]
def distinct(x):
arr2 = []
for y in x:
if not y in arr2:
arr2.append(y)
return arr2
for x in distinct(arr):
print x,
python解决方案可能会变慢,因为检查太多。python内置了对以下各项的支持: 请注意,集合本质上是没有顺序的;您获得的顺序取决于set的实现,并且可能会发生更改。在极少数情况下,您需要保留顺序,您应该调整您的独特方法,在一个集合中查找Olog n,甚至O1摊销,而不是一个列表,如下所示:
def distinct(iterable):
seen = set()
for el in iterable:
if el not in seen:
seen.add(el)
yield el
for x in distinct(arr):
print (x)
顺便说一下,distinct的实现就是一个示例。这意味着这些值是及时计算的,而不是事先存储到一个大列表中。如果希望常规列表具有可调整大小的数组,请在listdistinctarr中调用as。Python内置了对以下内容的支持: 请注意,集合本质上是没有顺序的;您获得的顺序取决于set的实现,并且可能会发生更改。在极少数情况下,您需要保留顺序,您应该调整您的独特方法,在一个集合中查找Olog n,甚至O1摊销,而不是一个列表,如下所示:
def distinct(iterable):
seen = set()
for el in iterable:
if el not in seen:
seen.add(el)
yield el
for x in distinct(arr):
print (x)
顺便说一下,distinct的实现就是一个示例。这意味着这些值是及时计算的,而不是事先存储到一个大列表中。如果您希望常规列表具有可调整大小的数组,请在listdistinctarr中调用as。我想您希望保持原始顺序,如果y已经列出,您应该使用set或dict进行快速测试
arr = range(10) + [2,4,3]
def distinct(x):
ToRet = []
AuxDict = {}
for y in x:
if y not in AuxDict:
AuxDict[y] = 0
ToRet.append(y)
return ToRet
for x in distinct(arr):
print x,
我想你想保持原来的顺序,如果已经列出了y,你应该使用set或dict进行快速测试
arr = range(10) + [2,4,3]
def distinct(x):
ToRet = []
AuxDict = {}
for y in x:
if y not in AuxDict:
AuxDict[y] = 0
ToRet.append(y)
return ToRet
for x in distinct(arr):
print x,
要在Python中获取列表的唯一值,可以使用set:
>>> lst = range(10) + [2,4,3]
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 3]
>>> set(lst)
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
要在Python中获取列表的唯一值,可以使用set:
>>> lst = range(10) + [2,4,3]
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 3]
>>> set(lst)
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
请每个问题只问一个问题。这使得比较所有答案成为可能。你可以简单地问另一个问题。请每个问题只问一个问题。这使得比较所有答案成为可能。你可以简单地问另一个问题。