小编d.p*_*tto的帖子

python列表的值不是通过引用

我们来举个例子吧

a=['help', 'copyright', 'credits', 'license']
b=a
b.append('XYZ')
b
['help', 'copyright', 'credits', 'license', 'XYZ']
a
['help', 'copyright', 'credits', 'license', 'XYZ']
Run Code Online (Sandbox Code Playgroud)

我想在列表'b'中附加值,但列表'a'的值也已更改.
我想我不知道为什么会这样(python通过引用传递列表).
我的问题是"如何通过值传递它,以便附加'b'不会改变'a'中的值?"

python reference list

139
推荐指数
8
解决办法
15万
查看次数

将列表转换为集更改元素顺序

最近我注意到,当我转换listset元素的顺序发生变化,由字符排序.

考虑这个例子:

x=[1,2,20,6,210]
print x 
# [1, 2, 20, 6, 210] # the order is same as initial order

set(x)
# set([1, 2, 20, 210, 6]) # in the set(x) output order is sorted
Run Code Online (Sandbox Code Playgroud)

我的问题是 -

  1. 为什么会这样?
  2. 如何在不丢失初始订单的情况下进行设置操作(尤其是设置差异)?

python set

94
推荐指数
7
解决办法
10万
查看次数

每个值有多个键

是否可以在Python字典中为每个值分配多个键.一种可能的解决方案是为每个键分配值:

dict = {'k1':'v1', 'k2':'v1', 'k3':'v1', 'k4':'v2'}
Run Code Online (Sandbox Code Playgroud)

但这不是内存效率,因为我的数据文件大于2 GB.否则你可以制作字典键的字典:

key_dic = {'k1':'k1', 'k2':'k1', 'k3':'k1', 'k4':'k4'}
dict = {'k1':'v1', 'k4':'v2'}
main_key = key_dict['k2']
value = dict[main_key]
Run Code Online (Sandbox Code Playgroud)

这也是非常耗费时间和精力的,因为我必须经历两次整个字典/文件.还有其他简单和内置的Python解决方案吗?

注意:我的字典值不是简单的字符串(如问题'v1','v2')而是相当复杂的对象(包含不同的其他字典/列表等等,并且不可能腌制它们)

注意:问题看起来类似如何我同时使用键和索引作为相同的字典值? 但我不是在寻找有序/索引字典,我正在寻找其他有效的解决方案(如果有的话),除了这个问题中提到的两个.

python python-2.7 python-3.x

35
推荐指数
2
解决办法
4万
查看次数

Pandas中非"NaN"值的索引

从Pandas数据框中,如何获得非"NaN"值的索引?

我的数据框是

    A    b     c
0   1    q1    1
1   2    NaN   3
2   3    q2    3
3   4    q1    NaN
4   5    q2    7
Run Code Online (Sandbox Code Playgroud)

我想要列b不是NaN 的行的索引.(其他列中可能有NaN值,例如c)

non_nana_index = [0,2,3,4]

使用这个非"NaN"索引列表我想创建新的数据框,其中列b没有"南"

DF2 =

    A    b     c
0   1    q1    1
1   3    q2    3
2   4    q1    NaN
3   5    q2    7
Run Code Online (Sandbox Code Playgroud)

python pandas

29
推荐指数
2
解决办法
4万
查看次数

如何在qsub中指定错误日志文件和输出文件

我有一个qsub脚本

#####----submit_job.sh---#####
    #!/bin/sh
    #$ -N job1
    #$ -t 1-100
    #$ -cwd
    SEEDFILE=/home/user1/data1
    SEED=$(sed -n -e "$SGE_TASK_ID p" $SEEDFILE)
    /home/user1/run.sh $SEED 
Run Code Online (Sandbox Code Playgroud)

问题是 - 它将所有错误和输出文件(job1.eJOBID和job1.oJOBID)放在我运行qsub submit_job.sh的同一目录中,而我想保存这些文件(输出和错误日志文件在相同的不同place(指定为$ SEED_output).我试图将行更改为

/home/user1/run.sh $SEED -o $SEED_output
Run Code Online (Sandbox Code Playgroud)

但它没有用.有什么建议?? 如何指定默认输出和错误日志文件的路径和名称?

bash cluster-computing qsub sungridengine

25
推荐指数
1
解决办法
4万
查看次数

使用ggplot2在绘图底部绘制标题

在ggplot2中,如何将绘图标题放在绘图的底部.

qplot(rnorm(100)) + ggtitle("My Title")
Run Code Online (Sandbox Code Playgroud)

把标题放在情节的中间和顶部,而我希望它位于情节的中间和底部.

plot r ggplot2

11
推荐指数
2
解决办法
4843
查看次数

在Rstudio拼写检查

如何在Rstudio中配置和使用拼写检查?在工具>全局选项>拼写中,我将主词典语言设置为英语(美国),将自定义词典设置为"/usr/lib/rstudio/resources/dictionaries/en_US.dic"中的en_us.
我仍然没有看到错误拼写上的任何迹象(例如红色制作)!!

linux spell-checking hunspell rstudio

11
推荐指数
1
解决办法
2044
查看次数

FANN错误11:无法分配内存

在FANN的Python实现中,我收到了这个错误

from pyfann import libfann
ann = libfann.neural_net()
ann.create_standard(4, 2, 8, 9, 1)
#FANN Error 11: Unable to allocate memory.
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

python neural-network fann

7
推荐指数
1
解决办法
1690
查看次数

注释掉嵌套的三重引号

在python中注释多行,我们使用三引号

def x():
   """This code will 
      add 1 and 1 """
   a=1+1
Run Code Online (Sandbox Code Playgroud)

但是,如果我必须注释掉已经包含很多其他注释块的代码块(三重引用注释),该怎么办?例如,如果我想完全注释掉这个功能..

"""
def x():
   """This code will 
      add 1 and 1 """
   a=1+1
"""
Run Code Online (Sandbox Code Playgroud)

这不起作用.我怎样才能注释掉这些代码块.

python comments

6
推荐指数
2
解决办法
4015
查看次数

python如何检查列表不包含任何值

考虑这个简单的功能

def foo(l=[]):
    if not l:  print "List is empty"
    else : print "List is not empty"
Run Code Online (Sandbox Code Playgroud)

现在让我们打电话给foo

x=[]
foo(x)
#List is empty

foo('')
#List is empty
Run Code Online (Sandbox Code Playgroud)

但如果x = [''],则列表不被视为空!

x=['']
foo(x)
#List is not empty
Run Code Online (Sandbox Code Playgroud)

问题 -

  1. 为什么空值列表不被视为空?(在变量的情况下,它被认为是空的,例如)

    x=''
    if x:print 'not empty!!'
    else: print 'empty'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如何修改函数foo(),以便列表将在所有这些情况下被视为空:x=[],x=[''],x=['', '']

python python-2.7 python-3.x

6
推荐指数
1
解决办法
4505
查看次数