巨蟒 如何将迭代的内容添加到集合中?

从 os.path 导入目录 用 open (dirname (_ _ file _ _) +’/data/path/filename.txt’)作为 input _ data:

将可迭代的所有项目添加到现有的 set中的 “一种[ ... ]显而易见的方式”是什么?

122165 次浏览
Input _ list = [ map (int,num.split ()) for num in input _ data. readlines ()]

用列表内涵。

> > z = Set ([1,2]) > > > z.update (l)

使用列表简化迭代的创建,例如:)

>>> x = [1, 2, 3, 4]
>>>
>>> k = x.__iter__()
>>> k
<listiterator object at 0x100517490>
>>> l = [y for y in k]
>>> l
[1, 2, 3, 4]
>>>
>>> z = Set([1,2])
>>> z.update(l)
>>> z
set([1, 2, 3, 4])
>>>

[编辑: 错过了问题的设定部分]

> > > z

您可以像下面这样将 list的元素添加到 set:

>>> foo = set(range(0, 4))
>>> foo
set([0, 1, 2, 3])
>>> foo.update(range(2, 6))
>>> foo
set([0, 1, 2, 3, 4, 5])
for item in items:
extant_set.add(item)
集合([1,2,3,4]) > >

郑重声明,我认为“应该有一种——最好只有一种——显而易见的方法来做到这一点。”是假的。它提出了一个假设,许多有技术头脑的人做出,每个人都认为一样。对一个人显而易见的东西,对另一个人却不那么显而易见。

[编辑: 错过了问题的设定部分]

我认为我提出的解决方案是清晰可读的,并按照你的要求去做。我不相信有任何性能打击涉及到它——虽然我承认我可能会错过一些东西。但是尽管如此,对于另一个开发人员来说,这可能并不明显,也不可取。

最终结果

Rendered table

我有一个长表 td 单元格,这迫使表的边缘浏览器,看起来很难看。我只是希望该列的大小是固定的,并打破单词时,它达到指定的宽度。

为了那些相信循环执行 aset.add()会比执行 aset.update()更有竞争力的人的利益,这里有一个例子,你可以在上市前快速测试你的信念:

>\python27\python -mtimeit -s"it=xrange(10000);a=set(xrange(100))" "a.update(it)"
1000 loops, best of 3: 294 usec per loop


>\python27\python -mtimeit -s"it=xrange(10000);a=set(xrange(100))" "for i in it:a.add(i)"
1000 loops, best of 3: 950 usec per loop


>\python27\python -mtimeit -s"it=xrange(10000);a=set(xrange(100))" "a |= set(it)"
1000 loops, best of 3: 458 usec per loop


>\python27\python -mtimeit -s"it=xrange(20000);a=set(xrange(100))" "a.update(it)"
1000 loops, best of 3: 598 usec per loop


>\python27\python -mtimeit -s"it=xrange(20000);a=set(xrange(100))" "for i in it:a.add(i)"
1000 loops, best of 3: 1.89 msec per loop


>\python27\python -mtimeit -s"it=xrange(20000);a=set(xrange(100))" "a |= set(it)"
1000 loops, best of 3: 891 usec per loop
因此,这对我很有效:

<td><div style='width: 150px;'>Text to break here</div></td>

不需要为 table、 tr 元素指定任何类型的样式。

看起来循环方法的每个项目的成本是 update方法的三倍多。

使用 |= set()的成本大约是 update的1.5倍,但是只是在循环中添加每个单独项的一半。

< td > text222222222

Cat script 嘘

    var1=$1
var2=$2
if [ "$#" -eq 2 ]
then
if [ -d $var1 ]
then
echo directory ${var1} exist
else
echo Directory ${var1} Does not exists
fi
if [ -d $var2 ]
then
echo directory ${var2} exist
else
echo Directory ${var2} Does not exists
fi
else
echo "Arguments are not equals to 2"
exit 1
fi
< td > text3333333

执行如下-

./script.sh directory1 directory2