因此,我有一个Python脚本,该脚本读取篮球比赛的逐项比赛的.csv文件,以按阵容计算出加/减。它会在球员的姓氏列表中跟踪地板上的当前球员,并且当一个团队有两个具有相同姓氏的球员时,我会遇到一个错误(逐次比赛数据不使用名字,仅数字和姓氏,而我不跟踪其数字)。当我在重复名称之一上使用lineup.remove(player)时,问题就来了,它从列表中同时删除了这两个名称。有一种简单的方法可以只删除一个,如果可以,我可以指定哪个吗?
示例列表将是
['JONES', 'PATTERSON', 'SMITH', 'JONES', 'WILLIAMS']
Run Code Online (Sandbox Code Playgroud) 我已设法实现模拟过滤器功能(经过多次尝试)
filter' :: (Num a, Eq a) => (a -> Bool) -> [a] -> [a]
filter' a [] = []
filter' a (x:xs) = if a x
then x : filter' a xs
else filter' a xs
Run Code Online (Sandbox Code Playgroud)
我不清楚的是类型声明
filter' :: (Num a, Eq a) => (a -> Bool) -> [a] -> [a]
-- filter' (<10) [1,2,3]
-- output = []
Run Code Online (Sandbox Code Playgroud)
我们传入(<10) [1,2,3].但是在类型声明中,(a -> Bool)我们传递一个来自列表的递归,输出为true或false.然而,表达测试(<10)?怎么样我们为什么不添加另一个Bool?
我有一些代码没有按照我的意愿输出结果。
代码
def func_a(list1):
list1.insert(2,'3')
list1.append('c')
return (list1)
def main():
list_1 = ['1','2','a','b']
list_2 = func_a(list_1)
print (list_1)
print ("\n")
print (list_2)
main()
Run Code Online (Sandbox Code Playgroud)
此代码的输出是:
['1', '2', '3', 'a', 'b', 'c']
['1', '2', '3', 'a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
我希望它是:
['1', '2', 'a', 'b']
['1', '2', '3', 'a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud) 我想我理解了python中的类继承,基本上你可以继承子类的父类的属性以便重用,并且还可以"添加"它以使更复杂的类.
这是我的问题:我有一个Car下面的类有(model, color, mpg)参数,之后我创建了一个名为ElectricCar从父Car类继承的新子类...现在当我调用ElectricCar"时(battery_type, model, color, mpg),我得到以下错误:
TypeError:init()只需要2个参数(给定5个参数)
我知道要解决它.我需要添加self.model,self.color并self.mpg在ElectricCar类.但为什么我必须这样做?如果我需要在子类上重新定义,这似乎会破坏继承的目的.
class Car(object):
condition = "new"
def __init__(self, model, color, mpg):
self.model = model
self.color = color
self.mpg = mpg
my_car = Car("DeLorean", "silver", 88)
class ElectricCar(Car):
def __init__(self,battery_type):
self.battery_type = battery_type
my_car = ElectricCar("molten salt", "Honda","black", "33")
Run Code Online (Sandbox Code Playgroud) 是否可以使用它来实现以下目标?(使用"with"关键字)
之前:
try:
raise Exception("hello")
except Exception as e:
print "GOT IT"
Run Code Online (Sandbox Code Playgroud)
期望的效果:
def safety():
try:
yield
except Exception as e:
print "GOT IT"
with safety():
raise Exception("hello")
Run Code Online (Sandbox Code Playgroud)
它只是使代码更清洁.目前正在运行第二个代码段会出现错误:
Traceback (most recent call last):
File "testing.py", line 25, in <module>
with safety():
AttributeError: __exit__
Run Code Online (Sandbox Code Playgroud) 在我写boost::spirit::qi规则时,我偶然发现了这一点.我写了一个不正确的规则声明,我通过添加括号来修复.在我看来,我不知道为什么会有所作为.
char和之间有什么区别char()?
这是一个最小的例子,显示了它的相关性.
测试A并且B是等效的.测试C编译但未通过测试.测试D已注释掉,不会使用以下消息进行编译:C2440: 'static_cast' : cannot convert from 'skipper_type' to 'char'.(类型稍微复杂一点,错误就是C2664)
测试示例仅用于说明charvs 的使用在哪些方面char()有所不同.我的问题是两者之间的区别是什么.
#include <iostream>
#include <string>
#define BOOST_TEST_MODULE Main
#include <boost/test/unit_test.hpp>
#include <boost/spirit/include/qi.hpp>
using std::string;
namespace qi = boost::spirit::qi;
using Iterator = std::string::iterator;
using Skipper = qi::space_type;
Skipper skipper = qi::space;
void CHECK_ITERATOR(Iterator p, Iterator end)
{
if (p != end)
{
BOOST_CHECK_MESSAGE(p == end, "Remaining: " …Run Code Online (Sandbox Code Playgroud) 我在 C++ 中有以下模板函数
template<class S, class T> const T& safe_retrieve
(vector<T> const& data, vector<S> const& keys, const S& key)
{
assert(data.size() == keys.size());
typename vector<S>::const_iterator it = binary_find(keys.begin(), keys.end(), key);
assert(it != keys.end());
size_t index = static_cast<size_t>(it - keys.begin());
return data.at(index);
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误:
error: returning reference to temporary [-Werror=return-local-addr]
Run Code Online (Sandbox Code Playgroud)
我理解此错误的含义,但我不明白为什么我返回的引用是临时的。
我想知道是否有办法做到以下几点:
class Test_Vector_test(unittest.TestCase):
def test_add(self):
vector1 = Vector(2,2,2)
scalar = 1
self.assertRaises(NotImplementedError, vector1+scalar)
Run Code Online (Sandbox Code Playgroud)
此测试失败,出现以下错误代码:
Traceback (most recent call last):
File "/Users/sahandz/Documents/School/Programmeringsteknik och Matlab/dd1315pylab3-master/test/test_Vector.py", line 14, in test_add
self.assertRaises(NotImplementedError, vector1+scalar)
File "/Users/sahandz/Documents/School/Programmeringsteknik och Matlab/dd1315pylab3-master/lab/Vector.py", line 17, in __add__
raise NotImplementedError
NotImplementedError
----------------------------------------------------------------------
Ran 3 tests in 0.007s
FAILED (errors=1)
Run Code Online (Sandbox Code Playgroud)
即使你可以看到它实际上引起了错误.如何在不使用方法的情况下达到所需的功能(检查是否vector1+scalar引发NotImplementedError)?vector1.__add__
为什么Python解释器用于repr()打印表达式?
例如:
>>> S = "First line.\nSecond line."
>>> S
'First line.\nSecond line.'
Run Code Online (Sandbox Code Playgroud)
当然我可以str()通过print语句触发:
>>> print S
First line.
Second line.
Run Code Online (Sandbox Code Playgroud)
但是为什么str()在交互模式下不会默认触发?在许多方面,它似乎是一个更好的选择.
寻找具有不同数字的10位整数,以便前n个数字可从1到n整除.
一个较小的例子是123.
1可被1整除,
12可被1整除,2
123可被1,2和3整除
我写了一些代码来尝试自动执行此操作:
import sympy
import itertools
x = itertools.permutations('1234567890',10)
for s in x:
string_number = ''.join(s)
for j in range(1, len(string_number)):
a = set(range(1,j+1))
divisors = set( sympy.divisors( int(string_number[:j] ) ) )
if not (a.issubset(divisors) and a!=divisors):
break
print('FOUND IT %s'%string_number)
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,我认为这是因为最后一点的逻辑.我怎样才能确保如果一个数字违反条件,我继续下一个数字,如何确保如果数字服从条件,我选择正确的数字打印?