我有以下使用zip()的python代码,它似乎导致意外的数据截断.
inc_data = [[u'Period Ending', u'Dec 31, 2012', u'Dec 31, 2011', u'Dec 31, 2010'],
[u'Total Revenue\n', u'104,507,100\n', u'106,916,100\n', u'99,870,100\n'],
[u'Cost of Revenue\n',u'56,000,000\n']
]
inc_data2 = zip(*inc_data)
for i in inc_data2:
print i
Run Code Online (Sandbox Code Playgroud)
它只打印:
(u'Period Ending', u'Total Revenue\n', u'Cost of Revenue\n')
(u'Dec 31, 2012', u'104,507,100\n', u'56,000,000\n')
Run Code Online (Sandbox Code Playgroud)
但我希望它打印以下内容,但显然我必须u''手动添加填充程序以防止zip()截断inc_data.但我不知道如何编码.
(u'Period Ending', u'Total Revenue\n', u'Cost of Revenue\n')
(u'Dec 31, 2012', u'104,507,100\n', u'56,000,000\n')
(u'Dec 31, 2011', u'106,916,100\n', u'')
(u'Dec 31, 2010', u'99,870,100\n', u'')
Run Code Online (Sandbox Code Playgroud)
要描述上面的inc_data,
inc_data = [ [x],
[y],
[z] ]
Run Code Online (Sandbox Code Playgroud)
如何使x,y和z长度相同?长度是x,y或z的最大长度?
(u'Period …Run Code Online (Sandbox Code Playgroud) 我有一些代码在文件名加载的末尾添加了"_manual"这个词.我需要更改脚本,以便删除文件名(ES)的最后两个字母,然后用_ES_Manual替换它,例如: AC-5400ES.txt - > AC-5400_ES_manual.txt
我如何将该功能合并到此代码中?
folder = r"C:/Documents and Settings/DuffA/Bureaublad/test"
import os # glob is unnecessary
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
fullpath = os.path.join(root, filename)
filename_split = os.path.splitext(fullpath) # filename and extensionname (extension in [1])
filename_zero, fileext = filename_split
print fullpath, filename_zero + "_manual" + fileext
os.rename(fullpath, filename_zero + "_manual" + fileext)
Run Code Online (Sandbox Code Playgroud) 我有一个时间依赖的信号.
我希望随着时间的推移绘制其积分,其中时间为x轴,积分值为y轴.
有没有Python方法这样做?
更具体:
我有一个时间数组,time和一个信号数组,signal.它们具有相同的维度.
我需要整合signal在time同scipy.integrate.trapz().
我希望看到随着时间的推移积分变化,而不是得到最终积分.
如何在Python中反转单词?
例如:
SomeArray=('Python is the best programming language')
i=''
for x in SomeArray:
#i dont know how to do it
print(i)
Run Code Online (Sandbox Code Playgroud)
结果必须是:
egaugnal gnimmargorp tseb eht si nohtyP
Run Code Online (Sandbox Code Playgroud)
请帮忙.并解释.
PS:
我不能用[::-1].我知道这件事.我必须在面试中这样做,只使用循环:)
Python程序通常简洁明了,通常需要其他编程语言(我知道)的一堆行可以在python中用一行或两行完成.我试图编写的一个这样的程序是从字符串中提取所有其他字母.我有这个工作代码,但想知道是否有其他简洁方法可行?
>>> s
'abcdefg'
>>> b = ""
>>> for i in range(len(s)):
... if (i%2)==0:
... b+=s[i]
...
>>> b
'aceg'
>>>
Run Code Online (Sandbox Code Playgroud) 当我发现这个时,我试图从维基百科中了解Kadane的算法:
def max_subarray(A):
max_ending_here = max_so_far = A[0]
for x in A[1:]:
max_ending_here = max(x, max_ending_here + x)
max_so_far = max(max_so_far, max_ending_here)
return max_so_far
Run Code Online (Sandbox Code Playgroud)
我不熟悉Python.我尝试谷歌这种语法的作用,但我找不到正确的答案因为我不知道它叫什么.但是,我认为A[1:]相当于省略A[0],所以我认为for x in A[1:]:相当于for(int i = 1; i < A.length; i++)Java
但是,改变后for x in A[1:]:到for x in range(1,len(A)),我得到了错误的结果
对不起,如果这是一个愚蠢的问题,但我不知道在哪里可以找到答案.有人可以告诉我这个语法是做什么的,它叫做什么?另外,你能给我相当于for x in A[1:]:Java吗?
def foo(name, *args, **kwargs):
Run Code Online (Sandbox Code Playgroud)
*args如果它的长度 ( len(args)) 大于 2,我需要删除 的前两个参数。可以这样做吗?
这就是我需要这样做的原因:我有以下功能:
def foo(name, xml='my.xml', xsd='my.xsd', *otherfiles):
print('name: ' + name)
print('xml: ' + xml)
print('xsd: ' + xsd)
print(otherfiles)
Run Code Online (Sandbox Code Playgroud)
我需要向该函数的参数添加一个可选的布尔参数,而不破坏向后兼容性。所以我将函数更改为:
def foo2(name, *otherfiles, **kwargs):
kwargs.setdefault('relativePath', True)
if len(otherfiles)>0:
xml = otherfiles[0]
else:
kwargs.setdefault('xml', 'my.xml')
xml = kwargs['xml']
if len(otherfiles)>1:
xsd = otherfiles[1]
else:
kwargs.setdefault('xsd', 'my.xsd')
xsd = kwargs['xsd']
print('name: ' + name)
print('xml: ' + xml)
print('xsd: ' + xsd)
print(otherfiles)
Run Code Online (Sandbox Code Playgroud)
foo现在我通过检查和 的输出是否foo2相同来测试向后兼容性:
foo('my_name', '../my.xml', …Run Code Online (Sandbox Code Playgroud) 以a = [1,2,3,4,5]作为一个例子.从我的直觉来看,我认为a[::-1]是一样的a[0:len(a):-1].但结果变成了错误:
>>> a = [1,2,3,4,5]
>>> print a[::-1]
[5, 4, 3, 2, 1]
>>> print a[0:len(a):-1]
[]
>>> print a[0:3:-1]
[]
>>> print a[0:2:-1]
[]
>>> print a[:2:-1]
[5, 4]
>>> print a[:0:-1]
[5, 4, 3, 2]
>>> print a[0:-1]
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我实际上无法理解最后6次尝试的输出.谁能给我一些想法?谢谢吨.
以下是/sf/users/62541/对Explain Python的切片表示法的回答.
如果项目少于您的要求,Python对程序员很友好.例如,如果您要求[: - 2]并且只包含一个元素,则会得到一个空列表而不是错误.有时您会更喜欢错误,因此您必须意识到这可能会发生.
因此,当错误出现时,Pythonic的方法是什么?是否有更多的Pythonic方法来重写这个例子?
class ParseError(Exception):
pass
def safe_slice(data, start, end):
"""0 <= start <= end is assumed"""
r = data[start:end]
if len(r) != end - start:
raise IndexError
return r
def lazy_parse(data):
"""extract (name, phone) from a data buffer.
If the buffer could not be parsed, a ParseError is raised.
"""
try:
name_length = ord(data[0])
extracted_name = safe_slice(data, 1, 1 + name_length)
phone_length = ord(data[1 + name_length])
extracted_phone = safe_slice(data, 2 + name_length, …Run Code Online (Sandbox Code Playgroud) 相当简单的问题.说我有一个列表,如:
a = [3, 4, 54, 8, 96, 2]
Run Code Online (Sandbox Code Playgroud)
我可以使用切片在列表中间省略一个元素来生成这样的东西吗?
a[some_slicing]
[3, 4, 8, 96, 2]
Run Code Online (Sandbox Code Playgroud)
这个元素54被遗漏了.我猜想这可以解决问题:
a[:2:]
Run Code Online (Sandbox Code Playgroud)
但结果不是我的预期:
[3, 4]
Run Code Online (Sandbox Code Playgroud) python ×10
python-2.7 ×2
slice ×2
string ×2
filenames ×1
list ×1
matplotlib ×1
numpy ×1
replace ×1
reverse ×1
scipy ×1
truncation ×1