我有一个'词典 - 评价者'群组。对于每个组列表,我随机抽样两个(或更多值)并存储在新列表中
GroupsList = list([])
for m in Groups:
GroupsList.append(point_random_selection(m,n))
其中 point_random_selection
def point_random_selection(list,n):
if n == 0:
raise TypeError("The pulse density 0 is not iterable")
try:
sample_point = random.sample(list,n)
except ValueError:
sample_point = list
return sample_point
GroupsList = [[<liblas.point.Point object at 0x00000001363A0E10>],
[<liblas.point.Point object at 0x00000002CE52CB38>],
[<liblas.point.Point object at 0x00000000CF516908>],
[<liblas.point.Point object at 0x00000004293F9400>],
[<liblas.point.Point object at 0x0000000249F67C50>],
[<liblas.point.Point object at 0x0000000312D85A90>],
[<liblas.point.Point object at 0x000000047DF396A0>,
<liblas.point.Point object at 0x000000047DF14F98>]]
在某些情况下,我有两个或更多列表(例如:)
GroupsList[6]
[<liblas.point.Point object at 0x000000047DF396A0>,
<liblas.point.Point object at 0x000000047DF14F98>]
我希望在新列表中存储一个逐列表列表,以便当我有两个或更多 liblas.point.Point对象时,逐个追加:< / p>
GroupsList = [[<liblas.point.Point object at 0x00000001363A0E10>],
[<liblas.point.Point object at 0x00000002CE52CB38>],
[<liblas.point.Point object at 0x00000000CF516908>],
[<liblas.point.Point object at 0x00000004293F9400>],
[<liblas.point.Point object at 0x0000000249F67C50>],
[<liblas.point.Point object at 0x0000000312D85A90>],
[<liblas.point.Point object at 0x000000047DF396A0>],
[<liblas.point.Point object at 0x000000047DF14F98>]]
这是列表理解的最佳方法吗? ex插入
GroupsList.append(point_random_selection(m,n))
答案 0 :(得分:2)
如果我理解正确,您希望使用列表推导将[[a, b], [c, d]]
等嵌套列表更改为[a, b, c, d]
。如果这是您正在尝试执行的操作的正确解释,则以下操作将起作用:
GroupsList = [point for lst in GroupsList for point in lst]
然而,最好通过将循环更改为以下内容来创建平面结构(将append()
替换为extend()
):
for m in Groups:
GroupsList.extend(point_random_selection(m,n))
a.extend(b)
(其中a
和b
是列表)会产生与以下循环相同的行为(但效率更高):
for x in b:
a.append(x)
答案 1 :(得分:1)
我不完全确定我正确地阅读了你的问题,但你在寻找list.extend
吗?例如:
>>> a = [1, 2]
>>> a.extend([5, 1, 4])
>>> a
[1, 2, 5, 1, 4]
另外,一些一般的风格反馈:
Group
或GroupsList
;将它们命名为groups
或groups_list
。list([])
更容易编写为[]
point_random_selection
list
,因为它会影响全局list()
函数point_random_selection
return random.sample(the_list, min(n, len(the_list))